Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 boucle: cellules et shapes

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

vgendron

XLDnaute Barbatruc
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) = "")
 

vgendron

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
0
Affichages
351
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…