Boucle avec la fonction (Name)

  • Initiateur de la discussion Initiateur de la discussion matt916
  • 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 !

M

matt916

Guest
Bonjour à toutes et tous,

Mon problème est simple. Malgré mes recherches sur le net, je n'ai rien trouvé alors j'en appelle à votre savoir.

Mon Problème :
Je dispose d'un classeur avec x feuilles ayant un nom (fontion .Name).
Feuil1 (Name) > Nom de l'onglet "Toto" (.Name)
Feuil2 (Name) > Nom de l'onglet "Titi" (.Name)
...
Feuil5 (Name) > Nom de l'onglet "Tata" (.Name)

J'ai besoin de faire une boucle sur certaines feuilles. Pour cela, je voudrais m'appuyer sur le nom "(Names)" des feuilles et non le nom de l'onglet. Ma variable (FeuilleActive) me sort un résultat entre guillemets. Ce sont eux les fautifs, j'en suis sûr !

Voici mon code :
For i = 2 To 5

FeuilleActive = "Feuil" & i
FeuilleActive.Activate

Next i

Je vous remercie par avance pour votre soutien et aide.
A très bientôt.
Matt
 
Re : Boucle avec la fonction (Name)

Bonjour Matt916, Job75 🙂,
D'après la question, j'aurais tendance à proposer quelques fonctions...
Sheets("Feuil1").CodeName prendra le nom de la feuille et non le nom de l'onglet.
Sheets(i) utilisera l'index de la feuille.
Pour faire une boucle, je décrirais plutôt toutes les feuilles, et comparerais, soit le .Name, soit le .CodeName, type
Code:
Sub Test()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.CodeName = "Feuil1" Then MsgBox Feuille.Name
Next
End Sub
Bonne journée 😎
 
Re : Boucle avec la fonction (Name)

Bonjour Job75,

Mon objectif est d'arriver à faire une boucle sur une plage de feuilles dont le nom des onglets importe peu.

La fonction (NAME) de l'onglet "Propriétés - Feuil..." de chaque feuille sera prédéfini et immuable
par ex : onglet Propriété
(Name) : Feuil1 / Name : Toto (valeur de l'onglet)
(Name) : Feuil2 / Name : Tto (valeur de l'onglet)
(Name) : Feuil3 / Name : Toto (valeur de l'onglet)


For i = 2 To 5

FeuilleActive = "Feuil" & i
FeuilleActive.Activate

... 'suite du traitement pour chaque feuille sélectionnée (MAJ de données)

Next i

En espérant ne pas avoir été trop brouillon dans mes explications 🙂
Matt
 
Re : Boucle avec la fonction (Name)

Bonjour JNP,

J'ai déjà tout essayé :

.Index renvoie à la position de la feuille dans le classeur, ce qui ne me convient pas si un onglet est déplacé
.Name renvoie au nom de l'onglet. Il doit pouvoir être modifié sans que cela bloque la macro
.CodeName nécessite que le nom de la feuille soit connu.

Il est nécessaire que j'arrive à faire une boucle sur le nom de la Feuille dans la rubrique "Propriété" de VBA. C'est horrible comme problème !

Merci quand même pour vos conseils. Les recherches continuent.
Matt
 
Re : Boucle avec la fonction (Name)

Re, salut JNP 🙂 pierrejean 🙂

Toujours pas compris l'histoire de la boucle...

S'il s'agit d'aller sur une feuille qui peut changer de nom ou de position, une solution peut être celle-ci :

- nommer une cellule de cette feuille, par exemple "MaCellule" pour la cellule A1

- pour aller sur cette feuille, exécuter dans une macro :

Code:
Application.Goto "MaCellule"

A+
 
Bonjour à PierreJean et Re à Job75 et JNP,

PierreJean a presque réussi à atteindre mon objectif et je vous en remercie.

Après un petit test, je préfère vous soumettre le fichier qui pose tant de problème.

Je souhaiterais que les onglets en bleu fassent apparaître le résultat (voir boucle) souhaité...

Je sens que la fin est proche.

A+
Matt
 

Pièces jointes

Re : Boucle avec la fonction (Name)

Bonjour à tous

pas sûr d'avoir tout compris non plus, peut être ainsi :

Code:
Dim n As Byte, FeuilleActive As Worksheet
For n = 1 To Sheets.Count
    If Sheets(n).CodeName = "Feuil2" Or Sheets(n).CodeName = "Feuil3" _
        Or Sheets(n).CodeName = "Feuil4" Then
        Set FeuilleActive = Sheets(n)
        FeuilleActive.Activate
        Cells(1, 1).Value = "test validé"
    End If
Next n

bon après midi
@+
 
Re : Boucle avec la fonction (Name)

Re,

Ah c'est plus clair, dans la boucle on teste si les onglets sont bleus !!!

Code:
Sub Macro1()
Dim w As Worksheet
For Each w In Worksheets
If w.Tab.ColorIndex = 5 Then 'pour les onglets bleus
w.Cells(1, 1) = "test validé"
End If
Next
End Sub

Edit : salut Pierrot 🙂 tu t'y colles aussi...

A+
 
Re : Boucle avec la fonction (Name)

Re,

Oui mais voilà, c'était un bleu spécial... (code 23) :

Code:
Sub Macro1()
Dim w As Worksheet
For Each w In Worksheets
If w.Tab.ColorIndex = [COLOR="Red"]23[/COLOR] Then 'pour les onglets d'un bleu spécial
w.Cells(1, 1) = "test validé"
End If
Next
End Sub

A+
 
Re : Boucle avec la fonction (Name)

Bonjour Pierrot93, Rebonjour à tous,

Après une courte pause, je me rends compte que je vous ai fourvoyés là où je ne vous attendais pas : 😱 Horreur, le bleu était ici à titre indicatif, juste pour vous permettre de comprendre ma problématique....

Je viens de tester le code de Pierrot93 qui s'approche le plus de ce que je souhaite.

Je voudrais juste que la partie "Feuilx" de Sheets(n).CodeName = "Feuil2" soit automatisée. En effet, mon fichier définitif contient 10 feuilles à inclure dans la boucle.

Je voudrais éviter de mettre 10 conditions comme ci-dessus (If Sheets(n).CodeName = "FeuilXX" then...

A nos stylos et c'est reparti !

A+
Matt
 
Re : Boucle avec la fonction (Name)

Ce lien n'existe plusRe

toujours a tester:

Code:
Sub testVBA()
Sheets("Accueil").Select
For n = 2 To 4 'sélection de la feuille
  For m = 1 To Sheets.Count 'nombre de feuille dans le classeur
    If Sheets(m).CodeName = "Feuil" & n Then
      Set FeuilleActive = Sheets(m)
        FeuilleActive.Cells(1, 1).Value = "test validé"
      Exit For
    End If
  Next m
Next n
 
End Sub

L'interet de ce code est que même si la feuille change de place ou change de nom test validé y sera inscrit
 

Pièces jointes

Dernière édition:
Re : Boucle avec la fonction (Name)

Re

PierreJean, le code que j'ai retenu dans mon fichier est le votre que j'ai complété.
dans mon excel et avec votre code :
Si vous testez pas à pas, il y a un problème avec la Feuil4.

En position 4 dans le classeur : "Accueil"
Le test se termine sur cette feuille ! Je cherche une solution sans arriver à la trouver...

Merci et à bientôt
Matt
 
- 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

P
Réponses
15
Affichages
3 K
Pauliakov
P
F
Réponses
0
Affichages
867
fred2705
F
P
Réponses
2
Affichages
3 K
pauline6172
P
M
Réponses
4
Affichages
1 K
M
L
Réponses
3
Affichages
20 K
Lepilote
L
Retour