Problème ouverture classeur

Le
Alf
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'emp=
lacement 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 soit=
bien activé et que je puisse continuer mon programme ?

Merci pour votre aide
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #26525448
Bonjour,
Le 07/09/2019 à 15:06, Alf a écrit :
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 soit bien activé et que je puisse continuer mon programme ?

Quelle est la valeur de la variable NomFichier ?
dans 'Application.Windows(NomFichier).Activate'
Alf
Le #26525452
Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
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'e mplacement 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 so it 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
Le #26525456
Le 07/09/2019 à 17:47, Alf a écrit :
Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
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 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...

C'est sur quel OS (W10 par hasard) ?
et aussi place le 'Application.Windows(NomFichier).Activate' après le test d'erreur.
MichD
Le #26525460
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
Le #26525471
Le samedi 7 septembre 2019 15:06:13 UTC+2, Alf a écrit :
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'e mplacement 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 so it 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
Publicité
Poster une réponse
Anonyme