Boucles imbriquées : ne prend toujours que la même valeur...

Signaler
-
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
-
Hello à tous !
Cela fait longtemps que je planche sur des boucles imbriquées, si vous arrivez à me dégager de là ce serait top !

Mon fichier trouve les correspondances de texte entre deux onglets différents : dès que les 5 premiers caractères de ma cellule sont trouvés dans un autre onglet avec une grosse base de données, alors il y met à côté les infos complémentaires de l'autre onglet.
Toutefois au sein même de cette boucle, je souhaite en faire une nouvelle (cf boucle x en en dessous), et c'est là que je bloque : je cherche à ce qu'il prenne à chaque fois une valeur différence selon x (donc z+ 0 puis z+1 puis z+2 et z+3), mais finalement il ne me resort toujours QUE z+3, je n'arrive pas à incrémenter le x au sein de la boucle z déjà existante...Auriez-vous des idées ?

Ci dessous la partie du code :

For i = 11 To 27 Step 4 'lignes à remplir
For y = 1 To 14 Step 2 'colonnes à remplir
For Z = 5 To 300 'lignes pour chercher la correspondance

If Left(Worksheets("Grille soirée").Cells(i, y).Value, 5) = Left(Worksheets("Grille soirée").Cells(i + 4, y).Value, 5) And Worksheets("Grille soirée").Cells(i, y).Value <> "" Then
Worksheets("Grille soirée").Cells(i, y).Interior.Color = 65535
Worksheets("Grille soirée").Cells(i + 4, y).Interior.Color = 65535
End If

If Worksheets("Grille soirée").Cells(6, y).Value > 1 And Left(UCase(sansAccent(Worksheets("Grille soirée").Cells(i, y).Value)), 8) Like Left(UCase(sansAccent(Worksheets("Données TV Matrice").Range("E" & Z).Value)), 8) Then

For x = 0 To 3
Worksheets("Grille soirée").Cells(i, y).Offset(-1, 0).Value = Worksheets("Données TV Matrice").Range("C" & Z + x).Value
Next x

End If


Next Z
Next y
Next i

5 réponses

Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460
Bonjour,

mais finalement il ne me resort toujours QUE z+3
Ben vu le code de cette boucle
x=0 to 3
, c'est normal, vous ecrivez toujours la meme cellule
Que voulez vous que cela fasse en realite?
Merci pour votre retour !
J'aimerais justement qu'il incrémente le x à chaque nouvelle cellule z !

En fait à la base, mes boucles i et z servent à trouver des correspondances de texte --> je cherche la correspondance de i grâce à z.
Mais il s'avère que j'ai quelques z qui ont le même texte, mais pas les mêmes valeurs dans les cellules d'à côté --> Or ce sont ces valeurs qui m'intéressent, et mon code n'arrive pas à les récupérer les unes après les autres, il ne me sort toujours QUE la dernière occurence.

Mon x dans le code est une tentative pour décrire le nombre d'occurence --> S'il y a 3 occurences de z, alors en valeur il met z+0 puis z+1 puis z+2 et j'aurai ainsi mes trois valeurs différentes.

Je ne sais pas si c'est clair ?
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460 > Marion
Re,

alors en valeur il met z+0 puis z+1 puis z+2 et j'aurai ainsi mes trois valeurs différentes.
C'est ca que je ne comprends pas. Vous n'ecrivez qu'une cellule

Worksheets("Grille soirée").Cells(i, y).Offset(-1, 0).Value
Oui vous avez raison, le problème vient peut-être de là ! J'ai essayé d'y incrémenter un x quelque part, mais je bloque...
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460
Bonjour,

Vous pouvez mettre un fichier avec des données non confidentielles mais cohérente?
Et surtout écrire vos cellules x pour voir ce que vous voulez en final
Faites le pour deux exemples de suite pour voir l'empilage
Messages postés
1
Date d'inscription
samedi 6 février 2021
Statut
Membre
Dernière intervention
6 février 2021

Oui ce sera plus simple ! Voilà j'ai refait un fichier propre (le lien : https://wetransfer.com/downloads/3751fc0c5dbac917b9d6f373901a2a2720210206073942/049581)

Vous avez un premier onglet "FINAL" avec ma macro actuelle, qui réitère le même texte pour les colonnes 1 et 2.

Et je cherche donc à ajouter ou modifier le code pour pouvoir avoir ce que j'ai mis dans l'onglet "FINAL SOUHAITE".

En sachant que j'imaginais que le "x" d'incrémentation pouvait se trouver dans l'onglet "Données" car j'y ai mis un compteur pour voir combien d'occurence du même texte on peut avoir... (car cela pourra changer)

J'espère que cela vous aide mieux à comprendre ?

Merci de prendre le temps de m'aider là dessus :)
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460
Bonjour,

Je recupere le fichier et regarde la chose

Pourquoi n'y a t-il pas votre code?

Dans votre code y a: Grille soirée en nom de feuille correspond Final je suppose
Pardon je n'avais pas vu votre réponse !
Si il y a bien un code dans les modules, le module s'appelle "Matrice" et la macro en question s'appelle "Base", je vous la remets ici si besoin :

Sub Base()

For i = 11 To 27 Step 4
For y = 1 To 14 Step 2 'boucle uniquement sur les colonnes non grisées
For Z = 5 To 105


If Left(UCase(sansAccent(Worksheets("FINAL").Cells(i, y).Value)), 8) Like Left(UCase(sansAccent(Worksheets("Données").Range("E" & Z).Value)), 8) And Worksheets("FINAL").Cells(i, y).Value <> "" And Worksheets("Données").Range("E" & Z).Value <> "" Then
Worksheets("FINAL").Cells(i, y).Offset(1, 0).Value = Worksheets("Données").Range("G" & Z).Value & " % - " & ((Worksheets("Données").Range("H" & Z).Value) / 1000)
Worksheets("FINAL").Cells(i, y).Offset(-1, 0).Value = Worksheets("Données").Range("C" & Z).Value
End If



Next Z
Next y
Next i



End Sub
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460 > Marion
Bonjour,

Merci, mais j'avais fini par trouver ce code.

Par contre je ne comprends toujours pas ceci:
alors en valeur il met z+0 puis z+1 puis z+2 et j'aurai ainsi mes trois valeurs différentes.
Elles doivent se mettre ou ces valeurs?
Car je ne vois pas de difference entre vos deux feuilles Final en dehors des valeurs de cellules changent.
Comment est faite la feuille Final avant de lancer le code
>
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021

La feuille Final comporte uniquement les titres. Le but est d'aller chercher les valeurs de la cellule juste au dessus et juste en dessous s'il y a une correspondance avec le titre
Messages postés
15612
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
26 février 2021
1 460 > Marion
Bonjour,
la cellule juste au dessus et juste en dessous s'il y a une correspondance avec le titre

Desole, je n'y comprends rien. C'est dessus/dessous de quoi de quelle feuille?
La feuille données sert quoi?
Pouvez sortir de votre "bulle" et reprendre ce que vous vouliez faire vu de l'extérieur, sinon nous n'allons pas y arriver .

Suite:

Vous ne repondez toujours pas a cette question:
Qu'est ce qu'il y a dans la feuille final avant de lancer le code.
Pour comparer faut de quoi le faire, sans cette reponse, impossible de continuer.
Je vois bien pour colonne 1 ou sont les donnees affichees dans la feuille Donnees.
Mais ne vois pas plus