Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème ouverture classeur

5 réponses
Avatar
Alf
Excel 2016
Dans une macro j'ouvre un autre fichier Excel de la mani=C3=A8re suivante.

On Error Resume Next
Application.Windows("nomfichier.xls").Activate 'si le fichier est d=C3=A9j=
=C3=A0 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 =C3=A0 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=C3=A9j=C3=
=A0 ouvert, et donc je perds les donn=C3=A9es que je devais r=C3=A9cup=C3=
=A9rer dans celui-ci.
Y a-t-il une mani=C3=A8re autre que celle-l=C3=A0 pour que mon fichier soit=
bien activ=C3=A9 et que je puisse continuer mon programme ?

Merci pour votre aide
Alf

5 réponses

Avatar
Michel__D
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'
Avatar
Alf
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...
Avatar
Michel__D
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.
Avatar
MichD
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
Avatar
Alf
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