Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 19h46   #1
Invité de passage
 
Homme
controleur de gestion
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : controleur de gestion
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 1
Points : 1
Par défaut Utilisation de feuilles variables en VBA sans passer par indirect

Bonjour,

Je souhaites crée une macro qui pourrait me permettre de sélectionner une par une les feuilles de mon classeur.

Ex :
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub parcours()
 
dim x
dim nom_feuille
 
for x=1 to 3
nom_feuille= ??
sheets(nom_feuille).select
next
 
end sub
Je connais le codage pour supprimer ce problème en faisant appel à une cellule dans une feuille et la fonction INDIRECT, mais je voudrais pouvoir le faire uniquement en codage VBA

Merci d'avance à ceux ou celles qui pourront m'éclairer sur ce sujet, car je cherche depuis longtemps la solution à ce problème, mais sans succès
Titeuf4243 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 20h07   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonsoir,

Essaie avec ce code
Code :
1
2
3
4
5
6
7
Sub parcours()
Dim x As Byte
    For x = 1 To Worksheets.Count
        Worksheets(x).Select
        MsgBox "Nom de la feuille n° " & x & " : " & Worksheets(x).Name
    Next
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 20h14   #3
Invité de passage
 
Homme
controleur de gestion
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : controleur de gestion
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 1
Points : 1
Merci, cela me convient déjà bien comme réponse, en ce basant sur le numéro de la feuille, c'est déjà un progrès. Mais il peut m'arriver de ne vouloir que parcours les feuilles qui ne commencent que par le nom : "Feuil" & x
à ce moment là la macro ne fonctionne que si j'ai correctement créé mes feuilles dans le bon ordre
Titeuf4243 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 20h38   #4
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Re,

Le code que je t’ai proposé permet surtout de sélectionner toutes les feuilles du classeur et ce, quel que soit leur nom. Tu évites ainsi le risque d’erreur sur le nom de la feuille.
Si tu souhaites sélectionner des feuilles en particulier tu peux effectuer un test
Code :
1
2
3
4
5
6
7
8
9
Sub parcours()
Dim x As Byte
    For x = 1 To Worksheets.Count
        If Left(Worksheets(x).Name, 5) = "Feuil" Then
            Worksheets(x).Select
            MsgBox "Nom de la feuille n° " & x & " : " & Worksheets(x).Name
        End If
    Next
End Sub
Si tu souhaites sélectionner des feuilles « Feuil(x) » suivant leur ordre, tu peux coder
Code :
1
2
3
4
5
6
7
8
9
Sub parcours()
Dim x As Byte
Dim nom_feuille As String
    For x = 1 To 3
        nom_feuille = "Feuil" & x
        Worksheets(nom_feuille).Select
        MsgBox "Feuille sélectionnée : " & Worksheets(nom_feuille).Name
    Next
End Sub
Mais attention car si la feuille n’existe pas, le code va générer une erreur.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 20h43   #5
Invité de passage
 
Homme
controleur de gestion
Inscription : novembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : controleur de gestion
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2011
Messages : 3
Points : 1
Points : 1
Merci beaucoup gFZT82,

Avec ça je vais enfin pouvoir finaliser certaines des mes macros et avoir des classeurs plus propres, sans formules qui alourdissent les fichiers
Titeuf4243 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web