IF et ELSE IF en boucle
Bonjour à tous,
Après de multiples essais de combinaisons, je ne parviens pas à faire ce que je veux
J'ai une Macro qui fait une boucle en passant ligne pour opérer des actions. Je vais essayer de faire simple.
Ci dessous le bout de macro en question.
- La condition est que la ligne est un "X" en colonne 8
- Puis je définie des variables
- Puis je supprime la ligne qui porte le "X"
- Puis je pars dans une autre feuille "Invoice datas"
et là j'ai mon problème.
- Dans un cas : "unique_booking = 1", je dois ouvrir un hyperlink
- Dans l'autre non.
Hors, avec la macro comme elle est actuellement, si j'ai 2 cas (2 lignes) "unique_booking = 1", seul le premier s'exécute correctement, le second s’exécute sans ouvrir l'hyperlink, comme si j'étais dans le scénario (ElseIf) "unique_booking <> 1"
Je ne sais pas si c'est très clair
Voici la bébête en question:
For fila_conf = 2 To ult_fila_conf
Sheets("Confirmation").Activate
If Cells(fila_conf, 8) = "X" Then
our_booking_number = Cells(fila_conf, 7)
supplier = Cells(fila_conf, 3)
unique_booking = Cells(fila_conf, 25)
service_type = Cells(fila_conf, 2)
combinacion = supplier & our_booking_number & service_type
For fila_remind = 2 To ult_fila_remind
If Cells(fila_remind, 19).Text = combinacion Then
Range("S" & fila_remind & ":X" & fila_remind).Select
Selection.Delete Shift:=xlUp
End If
Next fila_remind
Sheets("Invoice Datas").Activate
Range("a50000").End(xlUp).Activate
ult_fila_inv = ActiveCell.Row
For i = 2 To ult_fila_inv
If Cells(i, 5) = our_booking_number And Cells(i, 10) = supplier And Cells(i, 9) = service_type And unique_booking = 1 Then
Cells(i, 6) = "Confirmed"
Cells(i, 7) = "Confirmed"
Pagina = Cells(i, 47).Text
ActiveWorkbook.FollowHyperlink Address:=Pagina, NewWindow:=True
ElseIf Cells(i, 5) = our_booking_number And Cells(i, 10) = supplier And Cells(i, 9) = service_type And unique_booking <> 1 Then
Cells(i, 6) = "Confirmed"
Cells(i, 7) = "Confirmed"
Exit For
End If
Next i
En vous remerciant par avance pour votre aide!
Tsetse
Bonjour,
1) merci d'indenter ton code et de le mettre en balises [ code] et [ /code] (sans les espaces après le "[")
2) si tu supprimes des lignes il faut le faire dans l'ordre inverse : de la dernière vers la première
Sinon forcément tu passeras une ligne sur 2
Sans fichier, j'espère que cela t'aidera
bonjour
et de commenter le code ; un titre, des sous-titres...
amitiés
Bonjour,
Merci pour vos réponses et désolé pour le format de mon post. Le voici à nouveau formaté en espérant que ce soit ok ainsi.
Merci!
'Ici nous recherchons dans la colonne 8 les cellules avec "X" et nous définissons des variables pour les valeurs de la même ligne
For fila_conf = 2 To ult_fila_conf
Sheets("Confirmation").Activate
If Cells(fila_conf, 8) = "X" Then
our_booking_number = Cells(fila_conf, 7)
supplier = Cells(fila_conf, 3)
unique_booking = Cells(fila_conf, 25)
service_type = Cells(fila_conf, 2)
combinacion = supplier & our_booking_number & service_type'Ici nous rechercons dans la colonne 19 les valeurs qui correspondent à la variable combinacion pour supprimer les cellules des colonnes S à X
For fila_remind = 2 To ult_fila_remind
If Cells(fila_remind, 19).Text = combinacion Then
Range("S" & fila_remind & ":X" & fila_remind).Select
Selection.Delete Shift:=xlUp
End If
Next fila_remind'Ensuite toujours pour les cellules avec "X" de la colonne 8 et les variables mémorisées, nous allons dans une autre feuille 'Invoice Datas", pour retrouver les lignes qui contiennent les valeurs identiques aux variables mémorisées et changer les colonnes 6 et 7 de ces lignes en "confirmed" et activer un lien hypertexte SI "unique_booking=1". Mon problème est que cela fonctionne seulement pour la première ligne qui contient "X". Si ma seconde ligne qui contient "X" a aussi une valeur "unique_booking=1", le lien hypertexte ne s'active pas et seulement l'action de changer les valeurs des colonnes 6 et 7 en "Confirmed' s'éxécute.
Sheets("Invoice Datas").Activate
Range("a50000").End(xlUp).Activate
ult_fila_inv = ActiveCell.Row
For i = 2 To ult_fila_inv
If Cells(i, 5) = our_booking_number And Cells(i, 10) = supplier And Cells(i, 9) = service_type And unique_booking = 1 Then
Cells(i, 6) = "Confirmed"
Cells(i, 7) = "Confirmed"
Pagina = Cells(i, 47).Text
ActiveWorkbook.FollowHyperlink Address:=Pagina, NewWindow:=True
ElseIf Cells(i, 5) = our_booking_number And Cells(i, 10) = supplier And Cells(i, 9) = service_type And unique_booking <> 1 Then
Cells(i, 6) = "Confirmed"
Cells(i, 7) = "Confirmed"
Exit For
End If
Next iRe,
Peux-tu essayer
For fila_remind = ult_fila_remind To 2 Step -1
If Cells(fila_remind, 19).Text = combinacion Then
Range("S" & fila_remind & ":X" & fila_remind).Select
Selection.Delete Shift:=xlUp
End If
Next fila_remindA+
Merci BrunoM45!!
Mais sur cette partie de suppression de cellules, je n'ai pas de problème, tout fonctionne, mon problème est après sur la dernière partie du code (cf mon commentaire)
Merci par avance
Tsetse
J'ai fait la modif mais c'est pire maintenant