XL 2021 boucle: cellules et shapes

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 !

chindou

XLDnaute Occasionnel
Bonsoir le forum
J'utilise le code ci-dessous pour afficher ou masquer une forme selon la valeur de la cellule correspondante (Les cellules sont dans la même colonne mais pas contiguës). Le code fonctionne bien seulement je souhaite éviter ce code répétitif et faire une boucle. Est ce possible?
Merci d'avance pour votre aides
Cordialement

VB:
If UCase(Range("M10").Value) = "" Then
        Shapes.Range(Array("__4")).Visible = msoFalse
    Else
        Shapes.Range(Array("__4")).Visible = msoTrue
    End If
    
    If UCase(Range("M12").Value) = "" Then
        Shapes.Range(Array("__5")).Visible = msoFalse
    Else
        Shapes.Range(Array("__5")).Visible = msoTrue
    End If
    
    If UCase(Range("M14").Value) = "" Then
        Shapes.Range(Array("__6")).Visible = msoFalse
    Else
        Shapes.Range(Array("__6")).Visible = msoTrue
    End If
    
        
    If UCase(Range("M16").Value) = "" Then
        Shapes.Range(Array("__7")).Visible = msoFalse
    Else
        Shapes.Range(Array("__7")).Visible = msoTrue
    End If
    
    If UCase(Range("M18").Value) = "" Then
        Shapes.Range(Array("__8")).Visible = msoFalse
    Else
        Shapes.Range(Array("__8")).Visible = msoTrue
    End If
    
    If UCase(Range("M20").Value) = "" Then
        Shapes.Range(Array("__9")).Visible = msoFalse
    Else
        Shapes.Range(Array("__9")).Visible = msoTrue
    End If
 
Solution
ensuite pour la boucle
en supposant que les cellules sont bien toutes les deux lignes M10-12-14-16-18...
et que les shapes sont numérotées __4 5 6 7 8 9..
Code:
for i=4 to 9
 Shapes.Range(Array("__"&i)).Visible = not(UCase(Range("M" &i*2+2).Value) = "")
next i
bonjour

déjà tu peux remplacer
VB:
If UCase(Range("M10").Value) = "" Then
        Shapes.Range(Array("__4")).Visible = msoFalse
    Else
        Shapes.Range(Array("__4")).Visible = msoTrue
    End If
par
Code:
Shapes.Range(Array("__4")).Visible = not(UCase(Range("M10").Value) = "")
 
ensuite pour la boucle
en supposant que les cellules sont bien toutes les deux lignes M10-12-14-16-18...
et que les shapes sont numérotées __4 5 6 7 8 9..
Code:
for i=4 to 9
 Shapes.Range(Array("__"&i)).Visible = not(UCase(Range("M" &i*2+2).Value) = "")
next i
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
247
Réponses
0
Affichages
378
Retour