cerhu > microsoft.* > microsoft.excel

Alf (07/09/2019, 15h06)
Excel 2016
Dans une macro j'ouvre un autre fichier Excel de la manière suivante.

On Error Resume Next
Application.Windows("nomfichier.xls").Activate 'si le fichier est déjà ouvert
If Err.Number <> 0 Then
On Error Resume Next
Workbooks.Open " nomfichier.xls "
Application.Windows(NomFichier).Activate
If Err.Number <> 0 Then 'si le fichier ne se trouve pas à l'emplacement requis
MsgBox "Classeur - nomfichier.xls - Non ouvert..."
End
End If
End If

Certaines fois Excel ne bascule pas sur ce fichier quand il est déjà ouvert, et donc je perds les données que je devais récupérer dans celui-ci.
Y a-t-il une manière autre que celle-là pour que mon fichier soitbien activé et que je puisse continuer mon programme ?

Merci pour votre aide
Alf
Michel__D (07/09/2019, 17h26)
Bonjour,

Le 07/09/2019 à 15:06, Alf a écrit :
[..]
> End If
> Certaines fois Excel ne bascule pas sur ce fichier quand il est déjà ouvert, et donc je perds les données que je devais récupérer dans celui-ci.
> Y a-t-il une manière autre que celle-là pour que mon fichier soit bien activé et que je puisse continuer mon programme ?


Quelle est la valeur de la variable NomFichier ?
dans 'Application.Windows(NomFichier).Activate'
Alf (07/09/2019, 17h47)
Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
[..]
> MsgBox "Classeur - nomfichier.xls - Non ouvert..."
> End
> End If
> End If
> Certaines fois Excel ne bascule pas sur ce fichier quand il est déjà ouvert, et donc je perds les données que je devais récupérer dans celui-ci.
> Y a-t-il une manière autre que celle-là pour que mon fichier soit bien activé et que je puisse continuer mon programme ?
> Merci pour votre aide
> Alf


La valeur de cette variable est le nom de mon fichier, ici 'nomfichier.xls'
J'ai oublié de modifier cette ligne...
Michel__D (07/09/2019, 18h49)
Le 07/09/2019 à 17:47, Alf a écrit :
> Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
> La valeur de cette variable est le nom de mon fichier, ici 'nomfichier.xls'
> J'ai oublié de modifier cette ligne...


C'est sur quel OS (W10 par hasard) ?

et aussi place le 'Application.Windows(NomFichier).Activate' après le test d'erreur.
MichD (07/09/2019, 20h25)
Bonjour,

'----------------------------------------------
Sub test()
Dim Wk As Workbook, X As String
Dim Chemin As String, Fichier As String

'Chemin où est situé le fichier.
'Ne pas oublier le "\"
Chemin = "E:\Documents\"
'Nom du fichier déjà ouvert ou à ouvrir
Fichier = "boucle.xlsm"

'Vérifie que le chemin et le fichier existent
X = Dir(Chemin & Fichier)
If X = "" Then
'Si le fichier n'existe pas
MsgBox "Le nom du fichier ou du répertoire est inexact."
'Met fin à l'exécution de la procédure
Exit Sub
End If

On Error Resume Next
'Si le fichier existe est ouvert
'La variable Wk pointe vers le classeur.
'Tu utilises la variable Wk pour tout le code
Set Wk = Workbooks(Fichier)
'Si le fichier n'est pas ouvert, cela génère une erreur
If Err <> 0 Then
Err = 0 'Efface l'erreur
'ouverture du fichier
'Dès que tu ouvres le fichier, c'est la fenêtre qui va
's'afficher à l'écran peu importe la fenêtre actuellle
Workbooks.Open (Chemin & Fichier)
Else
'Si le fichier était ouvert
'Cela affiche à l'écran l'application Excel
'évidemment si tu as plusieurs applications ouvertes
AppActivate "Excel"
'Cela active le classeur précisément si plusieurs classeur sont
ouverts.
Wk.Activate
End If

'Exemple de code avec la variable Wk
MsgBox Wk.Worksheets(1).Range("A1:A5").Address

End Sub
'----------------------------------------------

MichD
Alf (08/09/2019, 08h57)
Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
[..]
> MsgBox "Classeur - nomfichier.xls - Non ouvert..."
> End
> End If
> End If
> Certaines fois Excel ne bascule pas sur ce fichier quand il est déjà ouvert, et donc je perds les données que je devais récupérer dans celui-ci.
> Y a-t-il une manière autre que celle-là pour que mon fichier soit bien activé et que je puisse continuer mon programme ?
> Merci pour votre aide
> Alf


Oui c'est sur W10.
Je vais essayer ce code Michel_D, et je te dirai.
Merci
Discussions similaires
Problème ouverture d'un classeur

Probleme ouverture de classeur

Problème d'ouverture de classeur

Problème d'ouverture d'un classeur


Fuseau horaire GMT +2. Il est actuellement 13h18. | Privacy Policy