VBA:Sélectionner 2ème classeur ouvert ou un cl. au nom variable
Résolu/Fermé
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
-
1 juil. 2013 à 16:03
Alem13 Messages postés 40 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 juillet 2013 - 4 juil. 2013 à 10:19
Alem13 Messages postés 40 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 juillet 2013 - 4 juil. 2013 à 10:19
Bonjour,
Dans un code VBA, je cherche un moyen de sélectionner l'autre classeur ouvert, le nom pouvant varier. Quelqu'un connait-il un code?
A défaut, sauriez-vous comment sélectionner un classeur ouvert dont une partie du nom varie?
Exemple: mon classeur s'appelle été_indien mais je peux aussi en avoir ouvert un qui s'appelle été_maltais, été_bangladais, été_comorrien...
j'ai essayé Windows("été_" & "*").Activate mais cela ne fonctionne pas.
Merci d'avance pour vos réponses.
Dans un code VBA, je cherche un moyen de sélectionner l'autre classeur ouvert, le nom pouvant varier. Quelqu'un connait-il un code?
A défaut, sauriez-vous comment sélectionner un classeur ouvert dont une partie du nom varie?
Exemple: mon classeur s'appelle été_indien mais je peux aussi en avoir ouvert un qui s'appelle été_maltais, été_bangladais, été_comorrien...
j'ai essayé Windows("été_" & "*").Activate mais cela ne fonctionne pas.
Merci d'avance pour vos réponses.
A voir également:
- Vba activer un classeur déjà ouvert
- Comment activer windows 10 - Guide
- Activer chromecast - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Activer office gratuitement - Accueil - Bureautique
- Fichier ouvert dans system ✓ - Forum Windows
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
1 juil. 2013 à 16:12
1 juil. 2013 à 16:12
Bonjour,
Tu peux :
1- boucler sur tous les classeurs ouverts
2- tester chaque nom de classeur...
Comme ceci :
Et, dans l'idéal, pour pouvoir passer d'un classeur à l'autre, il convient de :
1- affecter le 1er classeur à une variable,
2- sélectionner le 2ème
3- l'affecter à une autre variable.
Dans le style :
NB : je n'ai pas testé ces codes, ils ne devraient pas être trop loin de la réalité...
Tu peux :
1- boucler sur tous les classeurs ouverts
2- tester chaque nom de classeur...
Comme ceci :
Sub Boucle() Dim Wbk As Workbook For Each Wbk In Application.Workbooks If Left(Wbk.Name, 4) = "été_" Then Wbk.Activate Exit For End If Next Wbk End Sub
Et, dans l'idéal, pour pouvoir passer d'un classeur à l'autre, il convient de :
1- affecter le 1er classeur à une variable,
2- sélectionner le 2ème
3- l'affecter à une autre variable.
Dans le style :
Sub ChoixClasseurs() Dim Wbk As Workbook Dim ClasseurSource As Workbook Dim ClasseurDest As Workbook Set ClasseurSource = ThisWorkbook For Each Wbk In Application.Workbooks If Left(Wbk.Name, 4) = "été_" Then Set ClasseurDest = Wbk ClasseurDest.Activate Exit For End If Next Wbk End Sub
NB : je n'ai pas testé ces codes, ils ne devraient pas être trop loin de la réalité...
2 juil. 2013 à 09:42
Ta 1ère solution fonctionne en effet mais n'y a-t-il pas un moyen plus simple en utilisant qch du type "Windows("été_" & "*").Activate "? A l'utilistation de la macro, il n'y a que deux classeurs ouverts et un seul de type "été_".
Pour la 2ème, est-ce que les noms ClasseurDest et ClasseurSource sont mémorisés pour d'autres Sub? Je ne parviens pas à l'utiliser ailleurs. As-tu des solutions pour cela?
Merci pour tout
2 juil. 2013 à 09:59
1- non je ne connais rien de plus simple. En même temps :
- ça limite les risques d'erreurs pour le cas ou ton fichier été_ n'est pas ouvert
- si tu n'as que 2 classeurs ouverts, il n'y a aucune perte de temps...
2- Pour utiliser une variable dans d'autres procédures (Sub), il faut en changer la portée.
Une variable peut avoir trois type de portée :
- au niveau de la procédure et seulement de la procédure. On la déclare comme ceci :
- au niveau du module et seulement de ce module :
-au niveau de tous les modules du classeur :
En entête d'un module standard :
Public maVar As Double
dans ce cas, maVar sera accessible de toutes tes procédures, dans tous les modules du classeur...
Un lien sur les variables : https://silkyroad.developpez.com/VBA/LesVariables/