2 conditions dans une boucle

Fermé
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - Modifié par jordane45 le 13/11/2015 à 10:15
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 13 nov. 2015 à 17:18
Bonjour à tous,

Je cherche à imbriquer ces 2 conditions, dans ma boucle, mais cela ne fonctionne pas.

Pourriez vous m'éclairer sur le bon code.

Merci.

' Met les cellule en vert dans la colonne C si dans Colonne AK = "Notre Sélection"
   
           Dim PL As Range
           Dim PLV As Range
           Dim Cel As Range
       'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
       With Worksheets(I)
       'Balayage de la colonne A17, jusqu'à la dernière cellule renseignée
        For Each Cel In .Range("AH18:AH" & .Range("AH" & Rows.Count).End(xlUp).Row)
           'Si la cellule contient "Notre Sélection"
            If Cel.Value = "Notre Sélection" Then
            'alors, remplir la cellule correspondante en colonne A/D en vert
            .Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic  ' Interior.ColorIndex = 4
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57       '   (souligné).Font.Underline = xlUnderlineStyleSingle
            
        Else
            ' mais si il n'y a pas Notre Selection alors on met un fond neutre
            .Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
            .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55  ' .Font.Underline = xlUnderlineStyleSingleNone(non souligné)
        End If
      Next Cel
   End With

        ' Met les cellule en vert dans la colonne C si dans Colonne AK = "Truffaut Sélection"
   
          ' Dim PL As Range
          ' Dim PLV As Range
          ' Dim Cel As Range
       'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
       ' With Worksheets(I)
       'Balayage de la colonne A17, jusqu'à la dernière cellule renseignée
       '  For Each Cel In .Range("AI18:AI" & .Range("AI" & Rows.Count).End(xlUp).Row)
           'Si la cellule contient "Truffaut Sélection"
         '    If Cel.Value = "Truffaut Sélection" Then
            'alors, remplir la cellule correspondante en colonne A/D en vert
          '   .Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic  ' Interior.ColorIndex = 4
         '    .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
          '   .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
         '    .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57       '   (souligné).Font.Underline = xlUnderlineStyleSingle
            
      '   Else
            ' mais si il n'y a pas Truffaut Selection alors on met un fond neutre
         '    .Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
         '    .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
          '   .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
          '   .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55  ' .Font.Underline = xlUnderlineStyleSingleNone(non souligné)
       '  End If
    '   Next Cel
 '   End With




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

10 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 nov. 2015 à 07:48
Bonjour,

imbriquer ces 2 conditions lesquelles er qu'est-ce qui ne fonctionne pas ?????

Dans le code (qui marche), y a pas de couleur programmee
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
Modifié par jordane45 le 13/11/2015 à 10:15
Bonjour f894009,

Merci pour ton aide.

Je n'avais pas rectifié les explications du code.
Je veux que si l'une des 2 conditions sont remplies alors je met en italique gras.
J'ai réécrit ce code mais code erreur next sans FOR

' Met la police en italique et gras dans la colonne A/D si dans Colonne AH = "Notre Sélection"
   
           Dim PL As Range
           Dim PLV As Range
           Dim Cel As Range
       'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
       With Worksheets(I)
       'Balayage de la colonne AH18, jusqu'à la dernière cellule renseignée
        For Each Cel In .Range("AH18:AI" & .Range("AH" & Rows.Count).End(xlUp).Row)
           'Si la cellule contient "Notre Sélection"
            If Cel.Value = "Notre Sélection" Then
            If Cel.Value = "Truffaut Sélection" Then
            'alors, on modifie la police correspondante en colonne A/D
            '.Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic  ' Interior.ColorIndex = 4
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57
            
        Else
            ' mais si il n'y a pas Notre Selection alors on met la police en standard
            '.Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
            .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55
        End If
      Next Cel
   End With





Alors j'ai modifié avec ce code et toujours le même code erreur ?

Je ne comprends pas ce que je dois faire.

    ' Met la police en italique et gras dans la colonne A/D si dans Colonne AH = "Notre Sélection"
   
           Dim PL As Range
           Dim PLV As Range
           Dim Cel As Range
           Dim Cel2 As Range
           
       'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
       With Worksheets(I)
       'Balayage de la colonne AH18, jusqu'à la dernière cellule renseignée
        For Each Cel In .Range("AH18:AI" & .Range("AH" & Rows.Count).End(xlUp).Row)
           'Si la cellule contient "Notre Sélection"
            If Cel.Value = "Notre Sélection" Then
            If Cel2.Value = "Truffaut Sélection" Then
            'alors, on modifie la police correspondante en colonne A/D
            '.Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic  ' Interior.ColorIndex = 4
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57
            
        Else
            ' mais si il n'y a pas Notre Selection alors on met la police en standard
            '.Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
            .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55
            
        End If
      Next Cel
      Next Cel2
   End With


j'ai tenté celui la et la rien ne ce passe


' Met la police en italique et gras dans la colonne A/D si dans Colonne AH = "Notre Sélection"
   
           Dim PL As Range
           Dim PLV As Range
           Dim Cel As Range
           Dim Cel2 As Range
           
       'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
       With Worksheets(I)
       'Balayage de la colonne AH18, jusqu'à la dernière cellule renseignée
        For Each Cel In .Range("AH18:AI" & .Range("AH" & Rows.Count).End(xlUp).Row)
           'Si la cellule contient "Notre Sélection"
            If Cel.Value = "Notre Sélection" & "Truffaut Sélection" Then
           ' If Cel2.Value = "Truffaut Sélection" Then
            'alors, on modifie la police correspondante en colonne A/D
            '.Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic  ' Interior.ColorIndex = 4
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57
            
        Else
            ' mais si il n'y a pas Notre Selection alors on met la police en standard
            '.Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
            .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
            .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55
            
        End If
      Next Cel
     ' End If
     ' Next Cel2
   End With


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 nov. 2015 à 09:29
Re,

les cellules colonnes AH ne peuvent pas contenir "Notre Sélection" et"Truffaut Sélection" en meme temps !!!!!!!!!!!!!!!!!!!!!!!!!!

Sub test()
    Dim PL As Range
    Dim PLV As Range
    Dim Cel As Range
    'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
    With Worksheets(I)
        'Balayage de la colonne AH18, jusqu'à la dernière cellule renseignée
        For Each Cel In .Range("AH18:AI" & .Range("AH" & Rows.Count).End(xlUp).Row)
            'Si la cellule contient "Notre Sélection"
            If Cel.Value = "Notre Sélection" Or Cel.Value = Cel.Value = "Truffaut Sélection" Then
                'alors, on modifie la police correspondante en colonne A/D
                '.Cells(Cel.Row, 1).Resize(1, 4).Font.ColorIndex = xlAutomatic ' Interior.ColorIndex = 4
                .Cells(Cel.Row, 1).Resize(1, 4).Font.Bold = True
                .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = True
                .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 57
            Else
                ' mais si il n'y a pas Notre Selection alors on met la police en standard
                '.Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
                .Cells(Cel.Row, 3).Resize(1, 4).Font.Bold = False
                .Cells(Cel.Row, 1).Resize(1, 4).Font.Italic = False
                .Cells(Cel.Row, 1).Resize(1, 4).Font.Size = 55
            End If
        Next Cel
    End With
End Sub
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 10:01
ha oui je n'avais pas précisé que dans AH il y a notre selection et dans AI truffaut selection et que du moment il y a une des 2 alors on change la police.

Je vais essayer ton code et je reviens vers toi.

Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 10:34
Bon je ne marche pas, ca ne met pas en gras italique si j'ai notre selection ou truffaut selection.
Peut etre que cela vient que j'ai 1 colonne pour notre selection en AH et que la 2 eme colonne truffaut selection est en AI.
Quand je mets For Each Cel In .Range("AH18:AI" & .Range("AH" & Rows.Count).End(xlUp).Row) il cherche bien dans les 2 colonnes ?

Je ne comprends pas tout en vba, merci pour ton aide.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 nov. 2015 à 10:40
Re,

Peut etre que cela vient que j'ai 1 colonne pour notre selection en AH et que la 2 eme colonne truffaut selection est en AI. Expliquez ce que vous voulez sans code VBA, juste avec des mots
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 10:53
Merci pour ta patience.

Je veux mettre en gras italique les cellules de A/D si dans la colonne AH il y a d'écrit notre selection et ou dans la colonne AI il y a d'écrit Truffaut selection, je peux avoir les 2 conditions de remplies pour une ligne,et si il n'y a rien alors on met la police ni gras et ni italique.

Bon j'espère que c'est explicite ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 nov. 2015 à 11:51
Re,

C'est bon, je fais
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 11:56
Ok merci, je tourne le code dans tout les sens et je ne trouve pas.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 nov. 2015 à 12:09
Re,

Sub test()
    Dim PL As Range
    Dim PLV As Range
    Dim Cel As Range
    Dim Plage As Range
    
    'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
    With Worksheets("Feuil1")
        'Balayage de la colonne AH18, jusqu'à la dernière cellule renseignée
        Set Plage = Range("AH18:AH" & .Range("AH" & Rows.Count).End(xlUp).Row)
        For Each Cel In Plage
            'Si (la cellule AHxx contient "Notre Sélection" ou la cellule AIxx contient "Truffaut Sélection"
            If Cel.Value = "Notre Sélection" Or Cel.Offset(, 1).Value = "Truffaut Sélection" Then
                'alors, on modifie la police correspondante en colonne A/D
                '.Cells(Cel.Row, 1).Resize(, 4).Font.ColorIndex = xlAutomatic ' Interior.ColorIndex = 4
                .Cells(Cel.Row, 1).Resize(, 4).Font.Bold = True
                .Cells(Cel.Row, 1).Resize(, 4).Font.Italic = True
                .Cells(Cel.Row, 1).Resize(, 4).Font.Size = 57
            Else
                ' mais si il n'y a pas Notre Selection alors on met la police en standard
                '.Cells(Cel.Row, 3).Resize(1, 4).Font.ColorIndex = xlAutomatic '.Interior.ColorIndex = xlNone
                .Cells(Cel.Row, 1).Resize(, 4).Font.Bold = False
                .Cells(Cel.Row, 1).Resize(, 4).Font.Italic = False
                .Cells(Cel.Row, 1).Resize(, 4).Font.Size = 55
            End If
        Next Cel
    End With
End Sub
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 13:25
Ok je vais essayer ce code et je te dis.

Merci.
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 17:12
Bon j'ai fait des essais ca marche, mais je n'ai pas compris le code je vais le décortiquer et je verrai si je comprends.

Je te remercie pour ton aide si précieuse.

Je te souhaite une bonne soirée.

Amicalement.

Pascal
0
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022
13 nov. 2015 à 17:18
Si je peux abuser, j'avais un code que m'avait donné ThauTHeme, mais j'ai jamais reusi à l'integrer dans ma boucle, je veux que le filtre reste sur la ligne A17, et il m'avait donné ce code :
Dim I as Integer
For I = 1 To Sheets.Count
If Sheets(I).FilterMode = False Then Sheets(I).Range("A17").AutoFilter
Next I

merci par avance si tu as encore un peu de patience pour un pauvre novice.
0