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 i

Re,

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_remind

A+

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

Re,

Pour moi c'est lié, mais sans fichier je peux me tromper

J'ai fait la modif mais c'est pire maintenant la macro semble s'arrêter après le "Next fila_remind" et ne pas exécuter le reste

Rechercher des sujets similaires à "else boucle"