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

T

Tintin

Guest
Bonjour a tous

dans une macro j'ai 2 boucle , une dans l'autre
la 1ere fonctionne mais pas la 2e
ex:
For I = 5 To 2000
For J = 5 To 2000

If Workbooks("TOTO.XLS").Sheets("Feuil1").Cells(I, 18) = UserForm3.TBDOSSIER.Text Then

If Workbooks("TATA.XLS").Sheets("Feuil1").Cells(J, 3) = "" Then
end if
end if

next J
next I

si quelqu'un connait une solution?
merci d'avance
 
Bonsoir Tintin.

Pour moi, les 2 boucles fonctionnent parfaitement.
Seulement, c'est pas très optimisé:
1 - si ta deuxième condition est remplie, tu n'as rien à exécuter, donc ça sert à rien. Mais je suppose que tu n'as pas tout posté.
2 - Tu relances le premier test pour chaque J, alors que seul I est un paramètre de ce premier test. Donc tu le test 1994 fois pour rien.
Notamment, si pour i=10, par exemple, il est faut, tu fais quand même la boucle sur tous les J.

Voici donc comment j'écrirais tes boucles imbriquées:

Dim i as integer, j as integer
For i=5 to 2000
If Workbooks("TOTO.XLS").Sheets("Feuil1").Cells(I, 18) = UserForm3.TBDOSSIER.Text Then
For j=5 to 2000
If Workbooks("TATA.XLS").Sheets("Feuil1").Cells(J, 3) = "" Then
' ce que tu veux faire si oui ici
end if
next j
end if
next i

As-tu saisi la nuance?

Bonne soirée.
Laurent.
 
Bonjour à tous !!!!!!!!!!!

Une petite question de débutant : comment faire dans For Next pour ne pas sélectionner l'ensemble des colonnes, je m'explique :
Sur l'exemple de Tintin on a for i = 5 to 2000 et si on ne veut sélecionner que celle de 5 à 10, de 20 à 30 et de 100à 500, Comment fait-on?

Merci aux courageux qui travaillent aujourd'hui .........
 
Bonjour Tonio et le forum

Pour repondre de façon générale tu peux faire pour garder une seule boucle

For x = 5 To 500

Ton code

If x = 10 Then x = 19
If x = 30 Then x = 99

Next

Cela te fais sauter les valeurs dont tu ne veux pas en gardant une seule boucle

Mais Tu parles de colonnes et tu pars sur une boucle jusqu'à 500 alors juste un petit rappel il y a 256 colonnes maxi dans excel

Bonne journée

Pascal
 
Bonjour le fil, le Forum

Pour répondre à Tonio, on peut soit faire 3 boucles différentes soit
mettre ceci :

For i = 5 to 500
if i = 11 then i = 20
if i = 31 then i = 100
' Le traitement
next i

Bonne journée

PhiBou
 
Merci à tous les deux, c'est exactement ce qu'il me fallait mais maintenant j'aimerais effacer les colonnes qui n'ont pas été sélectionnées, voila ce que j'ai fai mais la méthode Range de l'objet a échoué. QUE CE PASSE T'IL ????

For R = 1 To 10
For C = 1 To 79
If C = 5 Then C = 15
If C = 20 Then C = 22
If C = 26 Then C = 29
...
range("E:E,F:F,G:G,H:H,I:I,J:J,K:K,L:L,M:M,N:N").Select
range("T:T,U:U").Select
...
Selection.ClearContents
Selection.Delete Shift:=xlToLeft
...



Merci
 
- 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
8
Affichages
270
Réponses
4
Affichages
581
Réponses
5
Affichages
708
Réponses
8
Affichages
651
Réponses
2
Affichages
78
Réponses
2
Affichages
187
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
218
Réponses
2
Affichages
427
Retour