Macro qui trouve la première valeur égale à "oui" et éxécute un code en fonction

Youri

XLDnaute Occasionnel
Bonjour à tous,

Comment créer une macro qui procède la manière suivante :

1. Stocker dans variablenonvideA la valeur C58 si Range("C58").Value = "Oui" et la valeur 0 si Range("C58").Value = "Non" ou Range("C58").Value = "" ou Range("C58").Value = 0, stocker dans variablenonvideB la valeur D58 si Range("D58").Value = "Oui" et la valeur 0 si Range("D58").Value = "Non" ou Range("D58").Value = "" ou Range("D58").Value = 0 et ainsi de suite jusqu'à la dernière cellule de Range("C58:FC58, C73:F73, C88:F88, C103:E103") (il doit y avoir en tout 15 cellules) - Dim variablesnonvides as Range.
3. Supprimer toutes les variablesnonvides dont la valeur est égale à 0
4. Stocker dans variablecompte (Dim variablecompte As Byte) le nombre de variablesnonvides restantes.
5. Exécuter le code suivant :
Code:
If variablecompte > 12 Then
    If Rows("107:147").EntireRow.Hidden = True Then
    Rows("107:147").EntireRow.Hidden = False
    End If
End If
If variablecompte > 8 And variablecompte < 13 Then
    If Rows("107:137").EntireRow.Hidden = True Then
    Rows("107:137").EntireRow.Hidden = False
    End If
End If
If variablecompte > 4 And variablecompte < 9 Then
    If Rows("107:127").EntireRow.Hidden = True Then
    Rows("107:127").EntireRow.Hidden = False
    End If
End If
If variablecompte > 0 And variablecompte < 5 Then
    If Rows("107:117").EntireRow.Hidden = True Then
    Rows("107:117").EntireRow.Hidden = False
    End If
End If
If variablecompte = 0 Then
    If Rows("107:127").EntireRow.Hidden = False Then
    Rows("107:127").EntireRow.Hidden = True
    End If
End If
6a. Pour la première variablenonvide restante, stocker dans variablerefA1 la valeur variablenonvide.Offset(-9, 0), dans variablerefA2 la valeur variablenonvide.Offset(-11, 0), dans variablerefA4 la valeur variablenonvide.Offset(-10, 0), dans la variable variablerefA3 la valeur C110 et exécuter le code suivant :
Code:
Dim variablerefA1 As Range
Dim variablerefA2 As Range
Dim variablerefA3 As Range
Dim variablerefA4 As Range
If variablerefA1.Value <> 0 And variablerefA1.Value <> "" Then
        If variablerefA2.Value <> 0 And variablerefA2.Value <> "" Then
            variablerefA3.Value = Trim(Trim(variablerefA1.Value) & " " & Trim(variablerefA2.Value) & " " & Trim(variablerefA4.Value))
        ElseIf variablerefA4.Value <> 0 And variablerefA4.Value <> "" Then
            variablerefA3.Value = Trim(variablerefA4.Value)
        Else
        variablerefA3.Value = "Contact 1"
        End If
    ElseIf (variablerefA2.Value <> 0 And variablerefA2.Value <> "") Or (variablerefA4.Value <> 0 And variablerefA4.Value <> "") Then
        variablerefA3.Value = Trim(Trim(variablerefA2.Value) & " " & Trim(variablerefA4.Value))
    Else
        variablerefA3.Value = "Contact 1"
End If
6b. Pour la deuxième variablenonvide restante, stocker dans variablerefB1 la valeur variablenonvide.Offset(-9, 0), dans variablerefB2 la valeur variablenonvide.Offset(-11, 0), dans variablerefB4 la valeur variablenonvide.Offset(-10, 0), dans la variable variablerefB3 la valeur D110 et exécuter le code suivant :
Code:
Dim variablerefB1 As Range
Dim variablerefB2 As Range
Dim variablerefB3 As Range
Dim variablerefB4 As Range
If variablerefB1.Value <> 0 And variablerefB1.Value <> "" Then
        If variablerefB2.Value <> 0 And variablerefB2.Value <> "" Then
            variablerefB3.Value = Trim(Trim(variablerefB1.Value) & " " & Trim(variablerefB2.Value) & " " & Trim(variablerefB4.Value))
        ElseIf variablerefB4.Value <> 0 And variablerefB4.Value <> "" Then
            variablerefB3.Value = Trim(variablerefB4.Value)
        Else
        variablerefB3.Value = "Contact 1"
        End If
    ElseIf (variablerefB2.Value <> 0 And variablerefB2.Value <> "") Or (variablerefB4.Value <> 0 And variablerefB4.Value <> "") Then
        variablerefB3.Value = Trim(Trim(variablerefB2.Value) & " " & Trim(variablerefB4.Value))
    Else
        variablerefB3.Value = "Contact 1"
End If
6c. Et ainsi de suite jusqu'à la dernière variablenonvide restante, les variableref_3 prennent successivement les valeurs de Range("C110:F110, C120:F120, C130:F130, C140:E140").

Voilà, ce n'est pas si difficile en soi, mais il me manque deux choses pour parvenir à terminer ce code : création de boucles et création automatique de variables.

Je vous remercie donc à l'avance,
Youri

PS : j'ai testé le code avec variablecompte et il fonctionne. Par contre, je ne sais pas si on peut écrire par exemple variablerefA1.value (je n'ai pas testé cette possibilité). Par contre je suis certain que le code avec les variablesref fonctionnait avec des Range("...").Value.
 

Discussions similaires

Réponses
2
Affichages
156

Statistiques des forums

Discussions
312 348
Messages
2 087 506
Membres
103 566
dernier inscrit
c@b@l77540