Création d'une boucle for - VBA

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

Poussin

XLDnaute Occasionnel
Bonjour à tous,

Après de nombreuses heures à chercher commennt résoudre ce problème de boucle. Je me permets de demander votre aide. Je vous joins un fichier Test. Mon problème est que je voudrais créer une boucle For dans le module 4 où se trouve la variable société. Je voudrais que cette variable société prenne successivement la valeur SOCIETE X1, SOCIETE X2 et SOCIETE X3 en fait les valeurs de la colonne B de la Feuil3 tout en faisant attention de ne prendre en compte qu'une seule fois chaque société.

N'hésitez à me demander si ma demande n'est pas claire. Je vous remercie par avance pour votre aide.

Cordialement
 

Pièces jointes

Re : Création d'une boucle for - VBA

Bonjour le fil, bonjour le forum,

Poussin, j'ai ouvert ton fichier mais pas vraiment compris... Je reprends donc le code de Fhoest adapté :
Code:
Dim c As Range
Dim societe As String
Dim i As Integer
 
i = 1
For Each c In Range("B2:B11")
    societe = "SOCIETE X" & i
    If société = c.Value Then
         'ton code
         x = x + 1
    End If
Next c
 
Re : Création d'une boucle for - VBA

Bonjour Robert
bien vu comme ceci on ne passe qu'une seule fois sur le même société je n'avais pas encore approfondi je l'aurai fais mais comme tu l'as si bien fait plus la peine (merci)
A+
 
Re : Création d'une boucle for - VBA

Merci pour vos réponses rapides. Cela fonctionne parfaitement par contre dans mon fichier original les sociétés portent des vrais noms en apparaissant plusieurs fois je m'explique :

CHARAL
CHARAL
CARREFOUR
AUCHAN
AUCHAN
AUCHAN
LECLERC

Je voudrais savoir si j'ai des risques d'avoir 2 fois la même société avec le code de fhoest car il me semble que cela fonctionne. Je voudrais donc être sur que le code de fhoest suffit à éviter les erreurs. Encore merci à vous 2 pour votre aide.
 
Re : Création d'une boucle for - VBA

Bonjour Poussin

Salut fhoest 🙂
Salut Robert 🙂

Comme je crois avoir compris:

Code:
Sub test()
Set dico = CreateObject("scripting.dictionary")
For Each c In Range("B2:B11")
 dico(c.Value) = c.Value
Next
a = dico.keys
For n = LBound(a) To UBound(a)
 societe = a(n)
 'ton code
Next
End Sub
 
Re : Création d'une boucle for - VBA

Merci pierrejean, j'ai oublié de signaler que de plus ma colonne B varie en taille donc il faudrait que je puisse prendre en compte toutes les sociétés lorsque j'en rajoute une par exemple. Encore merci à tous.
 
Re : Création d'une boucle for - VBA

Bonjour pierrejean,
deux petites questions a ce sujet.
j'ai souvent vu dico ... mais es ce que le doublon se gère automatiquement ou il faut le traiter de la sorte : if not exist ...?
de plus a=dico.keys dénombre quoi exactement ?
Merci
 
Re : Création d'une boucle for - VBA

Re @ poussin

voici pour gérer la dernière ligne.
Code:
Sub test()
dim drligne as long

Set dico = CreateObject("scripting.dictionary")
'peut etre 1 s a row (pas tester)
drligne=range("b2").end(xldown).row

For Each c In Range("B2:B" & drligne)
 dico(c.Value) = c.Value
Next
a = dico.keys
For n = LBound(a) To UBound(a)
 societe = a(n)
 'ton code
Next
End Sub
A+
 
Re : Création d'une boucle for - VBA

Re

@ fhoest

Les doublons sont automatiquement géerés par
Dico(x)=x
Attention toutefois, si x resulte d'une evaluation il convient de la faire au prealable
x=a*b
Dico(x)=x
a=dico.keys presente le dico sous forme d'un tableau permettant de lister les clés
a=dico.items serait dans ce cas identique
 
- 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

Discussions similaires

Réponses
10
Affichages
646
Réponses
3
Affichages
554
Retour