Condition sur chaque cellule d'une plage

kemsy Messages postés 10 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai besoin de votre aide svp.
sur vba excel, j'effectue une vérification des données que j'ai, et pour cela j'ai une plage de données dont les cellules prennent les valeurs suivantes : VRAI ou FAUX.
J'aimerai afficher un msgbox au cas ou toutes les cellules de la plage auraient la valeur VRAI, cependant je ne sais pas comment m'y prendre. Je sais le faire pour qu'il m'affiche un msgbox à chaque fois que la condition est validée dans une cellule, donc autant de msgbox que de cellules validées...

Range("I39:J55").Select
For Each cell In Selection
If cell.Value = FAUX Then MsgBox ("Total perf " & Range("D" & cell.Row).Value & ": Différences entre les totaux")
Next cell

Pourriez vous me donner un coup de main svp. Merci d'avance

6 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour tt le monde

a adapter à tes zones, ci dessous maquette de macro

Sub cestvraipartout()
If Application.CountA(Range("B1:B100")) = Application.CountIf(Range("B1:B100"), True) Then
MsgBox "gagné"
End If
End Sub
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,
Tu initialises une variable avant la boucle à VRAI et si dans ta boucle tu tombes sur un FAUX, tu affiches ta boite de message ET tu mets cette valeur à FAUX.
Après la boucle, tu regardes si cette variable a la valeur VRAI (donc aucune cellule contient FAUX) et si oui tu affiches ton message...
-1
kemsy Messages postés 10 Statut Membre
 
salut teebo

Desolé je ne comprends pas ce que tu dis, pourrais-tu me donner un exemple?
Je répète , je voudrai afficher un msgbox au cas ou toutes les cellules de la plage de données ont la valeur vrai.
Merci encore
-1
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Je ne sais plus trop comment marche VBA, mais en gros je reprend ton code et ajoute en gras ce que je propose

Dim TousVrai := VRAI

Range("I39:J55").Select
For Each cell In Selection
   If cell.Value = FAUX Then 
        MsgBox ("Total perf " & Range("D" & cell.Row).Value & ": Différences entre les totaux")
        TousVrai :=FAUX
   EndIf
Next cell
If TousVrai = VRAI Then MsgBox ("Tous vrai")
 
-1
kemsy Messages postés 10 Statut Membre
 
merci pour la rapidité de tes réponses,
j'ai testé ce que tu m'as proposé, cependant malgré le fait que j'ai une cellule dans la plage qui prend la valeur FAUX, j'ai quand même un msgbox ("Tous vrai")...
Je vois pas comment faire
-1

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

Posez votre question
kemsy Messages postés 10 Statut Membre
 
Re
Merci pour vos reponse, je n'ai pas testé ta reponse michel, mais merci quand meme, j'ai obtenu un code pas mal aussi : If Application.WorksheetFunction.And(ActiveSheet.Range("I39:J55")) Then MsgBox "tout est vrai"
ca fonctionne nickel
Bonne journée
-1
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
La formule que Tototiti est très belle!

Mais l'usage veut que l'on signale que l'on pose la question sur plusieurs forums...

mais un grand merci pour avoir communiquer la solution
-1