Bonjour à tous,
J'ai lu cette discussion et j'aimerai faire la même chose que LaMite.
Après quelques recherches dans la FAQ sans résultats, je me suis tourné vers Google et j'ai trouvé ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Sub Bouton_1()
Dim Dossier As String, Fichier As String, Chemin As String
Dossier = "Chemin du dossier"
Fichier = "NomFichier.xlsx"
Chemin = "Chemin du dossier + nom du fichier"
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub |
Bon, je n'ai jamais eu de cours en VBA, certains aspects sont compréhensible et d'autres non.
Boolean, String ok, je vois le principe.
le For each, le w et le W.Name etc... je vois pas trop :/
Aussi, je comprends plus ou moins le fonctionnement du code.
Et ce code fonctionne, mais une seule fois. Je m'explique :
Quand j'appuye sur le bouton du fichier Excel source, il ouvre effectivement le fichier Excel cible. Quand j'appuye dessus une deuxième fois alors qu'il est déjà ouvert, il me l'affiche à nouveau.
Mais si je le ferme (en sauvant ou non le fichier cible), et que je souhaite l'ouvrir peu après avec le bouton du fichier source, il me met une erreur :
Erreur d'éxecution "1004". La méthode "Open" de l'objet "Workbooks" à échoué
Quand j'ouvre le mode Débogage, VBA me surligne en jaune la ligne :
Workbooks.Open Filename:=Chemin
Ce que je ne comprends pas, c'est pourquoi ça fonctionne plus après une première ouverture de ce fichier?
Surtout que dans le code, on remet la valeur False à la valeur boléenne Présence?
Aussi, une fois que je ferme le fichier source, et que je l'ouvre après, le bouton fonctionne à nouveau.
Edit:
En attendant une réponse, je me suis permis de continuer mon idée et donc créer plusieurs boutons avec chaque fois la même macro pour un fichier cible différent (Un bouton par fichier pour chaque fournisseur différent)
Ca s'empire:
Quand j'appuye sur le bouton 1, il ouvre le fichier 1. Je le ferme.
J'appuye sur le bouton 2, il me met la même erreur cité plus haut (Erreur 1004)
Mais! Quand j'appuie sur le bouton 1, il ouvre le fichier 1. Je ne le ferme pas.
Et quand j'appuie sur le bouton 2 de suite, il ouvre le fichier 2.
Mais ce n'est pas pratique, car dans une utilisation future, j'aimerais ne pas avoir tous les fichiers cible des boutons ouvert... j'en ai 17 au total
Merci d'avance pour vos réponse.
Désolé de m'introduire mais je pensais plus juste de venir ici que d'ouvrir un autre sujet.
Je suis en Excel 2010...
Phouky.
Partager