Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Activer une feuille suivant une variable

  • Initiateur de la discussion Initiateur de la discussion regis826
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

regis826

Guest
Bonjour,
Je veux et je n'arrive pas à activer une feuille suivant une variable...je vous explique...

Je veux activer des feuilles dont les noms sont contenu dans une plage de cellules, j'ai donc utilisé une compteur en boucle pour avancer dans la plage de cellule mais mon Pb c'est que je ne sais pas comment utiliser la valeur de la cellule comme nom de feuille.
merci
Régis
Voici mon code:

counter = 5
While counter < 100
counter = counter + 1

If Sheets("Datas").Cells(counter, 13) Is Nothing Then GoTo fin

Y = Sheets("Datas").Cells(counter, 13)
Sheets(Y).Activate

code...........

wend
fin:
 
Re : Activer une feuille suivant une variable

Salut Regis,

Je ne comprends pas trop ce que tu entends par activer des feuilles. Si tu as une seule feuille je veux bien, mais si tu as plusieurs noms de feuilles dans ta liste correspondant aux feuilles présentent dans ton classeur, tu active quelle feuille?

Tes explications ne sont pas trop clairs, est-ce que tu pourrais préciser un peu? Sinon s'il s'agit d'une seule feuille, je pense qu'une simple boucle devrait suffire.

@+
 
Re : Activer une feuille suivant une variable

c'est pas tres clair.......
j'ai tout un tas de feuilles dans mon classeur, les noms de ces feuilles sont regroupés dans une colonne, le but c'est de les ouvrir les une apres l'autre pour y effectuer des modifications.
 
Dernière modification par un modérateur:
Re : Activer une feuille suivant une variable

re,

Ok. Donc j'effectue ma boucle, si je trouve un nom de feuille correspondant, je l'active et je sors de la boucle?
Si c'est ce que tu veux faire, le code suiovant devrait suffir :
PHP:
Sub feuille()
Dim cel As Range, ws As Worksheet
For Each cel In Sheets("Feuil1").Range("A1:A" & Range("A65536").End(xlUp).Row)
    For Each ws In Worksheets
        If cel = ws.Name Then
            Sheets(ws.Name).Activate
            Exit Sub
        End If
    Next ws
Next cel
End Sub

@+
 
Re : Activer une feuille suivant une variable

merci pour ta reponse.
Entretemps j'ai aussi trouvé une solution. Je te montre le code. je crée d'abord une fonction puis je l'utilise dans ma sub.

Function WsExist(nom$) As Boolean
On Error Resume Next
WsExist = Sheets(nom).Index
End Function



Sub données_trends()

Dim z As String
counter = 5
While counter < 100
counter = counter + 1

z = Sheets("Datas").Cells(counter, 13)
If Sheets("Datas").Cells(counter, 13) Is Nothing Then GoTo fin

If WsExist(z) Then
Worksheets(z).Activate
code.......
else
end if
wend
fin:
end sub
 
Re : Activer une feuille suivant une variable

Bonjour Porcinet82

Je suis ce l'on appelle un débutant question macro.Voilà mes questions : ta macro travaille t'elle en boucle en changeant chaque fois de cellule de ("A1 à A65536") ??? et peut-on lui intégrer une autre macro??? si oui à quel niveau???

D'avance merci.

Jelf
 
Dernière édition:
Re : Activer une feuille suivant une variable

Salut Jelf,

En fait, ligne For Each cel In Sheets("Feuil1").Range("A1:A" & Range("A65536").End(xlUp).Row) peut etre divisé en plusieurs partie.

Range("A65536").End(xlUp).Row permet de trouver la dernière ligne non vide de la colonne A en partant du bas de la feuille (donc en remontant)
Range("A1:A" & Range("A65536").End(xlUp).Row) permet de définir la plage de cellule dans laquelle sera executé la boucle, c'est à dire de la cellule A1 à la dernière cellule non vide de la colonne A.

Oui, tu peux intégrer une autre macro dans une macro, au niveau que tu souhaites, tout dépend de ce que tu veux faire. Pour ce faire, soit tu mets le code a l'intérieur, soit plus pratique, tu appels la macro avec Call Ta_macro que tu places ou tu veux.

@+
 
Re : Activer une feuille suivant une variable

Merci Porcinet82 de me répondre, je nage complètement, j'ai fais un test avec ta macro, elle sélectionne une feuille puis s'arrête (je n'ai que transcrire)
Peux tu vérifier si tout fois il n'y aurait pas une erreur dans ta macro ?? n'y connaissant rien je n'ose pas y toucher.
Par avance merci
Jelf

Ps: Je viens de tester la macro pas à pas et je crois comprendre que l'on ne retourne pas à "Feuil1"
RePs: un autre souci, ma macro est juste un copier coller,Le copier quelques soient les feuils est toujours au même endroit mais le coller correspond à chaque cellule pleine de la colone A:A dans la colone B:B Ex: A1 B1 et ainsi de suite.Crois tu cela réalisable???. Je te remercie
 
Dernière édition:
Re : Activer une feuille suivant une variable

Salut Jelf,

Oui c'est ce que fais la macro, elle te sélectionne la première feuille dont le nom est dans la liste.
J'aurais tres bien pu faire selectionner les unes apres les autres, toutes les feuilles dont le nom etait present dans la liste, mais je ne voyait pas l'interet. Si tu veux tester ce que je vien de dire, il te suffit d'enlever la ligne Exit Sub.

Si ce n'est pas ce que tu souhaites, dis moi exactement ce que tu veux faire avec ta macro.

@+
 
Re : Activer une feuille suivant une variable

Salut Porcinet

Voilà ce que j'aimerai obtenir. J'ai un classeur qui comporte de nombreuses feuils.Ces feuils ont dans l'onglet un N° de référence (chaque feuil correspond un produit.Dans "Liste" j'ai un tableau avec toutes les références et d'autres informations utilisées pour une autre information (pas très clair je le conçois)
Certaines de ces informations, je vais les chercher dans chaque feuil référencée et je fais un copier coller.
J'ai réussi à faire une macro dont je te transmet une partie
Sheets("Liste").Select
Dim nomfeuil As String
nomfeuil = Range("C2")
Sheets(nomfeuil).Select
Range("H2:I2").Select
Selection.Copy
Sheets("Liste").Select
Range("H2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(nomfeuil).Select
Range("N1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Liste").Select
Range("J2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(nomfeuil).Select
Range("A2").Select

Sheets("Liste").Select
nomfeuil = Range("C3")
Sheets(nomfeuil).Select
Range("H2:I2").Select
Selection.Copy
Sheets("Liste").Select
Range("H3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(nomfeuil).Select
Range("N1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Liste").Select
Range("J3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(nomfeuil).Select
Range("A2").Select
Sheets("Liste").Select

Autant de références = autant de paragraphes (j'en est mis que deux).
C'est pour cela que ta macro m'interesse car elle évite d'ajouter un paragraphe pour un nouveau produit.
Je voudrais que ta macro agisse feuil après feuil en faisant un copier coller (surtout que le coller correspond bien avec le N° de référence du tableau de "Liste" et feuil référencée)

Si tu peux me faire une p'tite macro super je ne te remercirai jamais assez.

Jelf
 
Re : Activer une feuille suivant une variable

re,

Je pense que ce que tu veux faire est faisable, du moins si j'ai bien compris. En fait tu veux copier/coller des informations sur la page trouvée dans la liste.
Est-ce que tu pourrais mettre un exemple de fichier (sans données confidentielles) avec ce qu tu as au départ et ce que tu souhaites comme résultat. Passe par Accueil de Cjoint.com

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
514
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…