Condition sur chaque cellule d'une plage

kemsy Messages postés 10 Date d'inscription   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
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    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
  3. kemsy Messages postés 10 Date d'inscription   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
    1. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
       
      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
  4. kemsy Messages postés 10 Date d'inscription   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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kemsy Messages postés 10 Date d'inscription   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
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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