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

Macro qui contrôle plusieurs conditions

  • Initiateur de la discussion Initiateur de la discussion Youri
  • Date de début Date de début

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 !

Youri

XLDnaute Occasionnel
Bonjour à tous,

Comment créer une macro qui procède de la manière suivante :
1. Si au moins une cellule de Range("F47:F59") est à la fois différente de 0 et de "" (pour une cellule ce serait Range("F47") <> 0 And Range("F47") <> "" mais je ne sais pas comment le faire pour plusieurs cellules à la fois) alors afficher Rows("60:104").​
2. Si à la fois toutes les cellules de Range("F47:F59") sont soit égales à 0 soit à "" alors masquer Rows("60:104").​

Voilà, je vous remercie pour votre aide,
Youri
 
Re : Macro qui contrôle plusieurs conditions

bonjour youri


je n'ai pas testé
 
Re : Macro qui contrôle plusieurs conditions

Bonjour,
Code:
Sub test()
Dim cel As Range
Dim compt As Byte
    For Each cel In Range("F47:F59")
        If cel <> "" And cel <> 0 Then
           compt = compt + 1
        End If
    Next
    If compt > 0 Then
        Range("F60:F104").EntireRow.Hidden = False
        Else
        Range("F60:F104").EntireRow.Hidden = True
    End If
End Sub
devrait répondre à la question
Cordialement

Edit : Salut Wilfried🙂, pas rafraichi...
 
Re : Macro qui contrôle plusieurs conditions

Salut à tous
Comme je suis feignant, je copie la macro de Spitnolan08 😀
Code:
[LEFT]Sub test()
Dim cel As Range
Rows("60:104").hidden=true
For Each cel In Range("F47:F59")
        If cel <> "" And cel <> 0 Then
           Rows("60:104").hidden=false
           exit for
        End If
Next
End Sub
Masquage lignes 60 à 104
Pour chaque cellule de la plage F47:F59
si la cellule testée n'est ni vide, ni égale à 0
J'affiche les lignes 60 à 104
Je sorts de la boucle
A+[/LEFT]
 
Re : Macro qui contrôle plusieurs conditions

re: Bonjour Spitnolan 🙂 , Gorfael 🙂

oui pour les cacher , mais pour les reafficher si je mets une valeur
entre F47 et F59 😛

desolé pour l'intrusion
 
Re : Macro qui contrôle plusieurs conditions

Bonjour à vous tous,

Merci beaucoup de vous intéresser à mon problème. J'ai choisi le code de Spitnolan08 en le modifiant de la manière suivante :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
Dim compt As Byte
    For Each cel In Range("F47:F59")
        If cel <> "" And cel <> 0 Then
           compt = compt + 1
        End If
    Next
    If compt > 0 Then
        If Range("F60:F104").EntireRow.Hidden = True Then
            Range("F60:F104").EntireRow.Hidden = False
        End If
        Else
        If Range("F60:F104").EntireRow.Hidden = False Then
            Range("F60:F104").EntireRow.Hidden = True
        End If
    End If
End Sub

J'ai rajouté deux conditions If car je veux que la macro soit active sans avoir besoin de la lancer par le menu macros. J'ai choisi Private Sub Worksheet_Change pour modéliser le comportement souhaité. Si vous avez une meilleure solution, je suis bien évidemment preneur.

Merci à vous,
Youri
 
Re : Macro qui contrôle plusieurs conditions

re:

tu as raison spit, c'est l'heure de la sieste !!!🙁

excuse moi gorfael, avant la sieste promis je me lave les yeux 😱

je reste tout penaud 😱

A plus et bonne sieste
 
Re : Macro qui contrôle plusieurs conditions

Re

J'ai fait un petit changement et ça marche plus "Erreur d'exécution 91: variable objet ou variable de bloc with non définie". Voici le nouveau code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
Dim compt As Byte
    For Each cel In Range("F47:F59")
        If cel <> "" And cel <> 0 Then
           compt = compt + 1
        End If
    Next
    If compt > 0 Then
        If Range("F60:F104").EntireRow.Hidden = True Then
            Range("F60:F104").EntireRow.Hidden = False
        End If
        Else
        If Range("F60:F104").EntireRow.Hidden = False Then
            Range("F60:F104").EntireRow.Hidden = True
        End If
    End If
Dim cel2 As Range
Dim compt2 As Range
    For Each cel2 In Range("F77:F89")
        If cel2 <> "" And cel2 <> 0 Then
           compt2 = compt2 + 1
        End If
    Next
    If compt2 > 0 Then
        If Range("F90:F104").EntireRow.Hidden = True Then
            Range("F90:F104").EntireRow.Hidden = False
        End If
        Else
        If Range("F90:F104").EntireRow.Hidden = False Then
            Range("F90:F104").EntireRow.Hidden = True
        End If
    End If
End Sub
Quelqu'un pourrait m'aider svp ? Merci à l'avance,
Youri
 
Re : Macro qui contrôle plusieurs conditions

Salut à tous
Youri : y'en a qui aime se faire des noeuds avec les boyeaux de la tête hein 😀 !
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim Flg_Cel as Boolean
 
For Each Cel In Range("F47:F59")
        If Cel <> "" And cel <> 0 Then
           Flg_Cel as True
           exit for
        End If
Next Cel
Rows("60:104").Hidden = Flg_Cel
For Each Cel In Range("F77:F89")
        If Cel <> "" And cel <> 0 Then
           Flg_Cel as True
           exit for
        End If
Next Cel
Rows("F90:F104").Hidden = Flg_Cel
End Sub
[/code]A+
 
Dernière édition:
- 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

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