If et and if VBA

Erwin -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour

Voici mon soucis
J'ai sur ma feuil6 dans les colonnes AC et AD des valeurs Vrai ou Faux
Je cherche à créer une alerte à l'ouverture du fichier qui dit :
Si vrai en AC et Faux en AD, alors alertes

J'ai essayé comme cela :
Valeur = Feuil6.cells (Dom.Row, 57) 'qui n'est que la concaténation du nom et prénom du contact
If Dom = VRAI and Fait = FAUX Then
Msgbox "Alerte : Contacter " & Valeur & " pour sa Dom à faire"
Else
End if

Mais je n'y arrive pas...

Je suis débutant en vba mais vous l'aurez certainement compris.... désolé. ..
Pour information les colonnes AC et AD sont remplis par des checkbox renvoyant donc la valeur vrai ou faux.(peut être important à savoir ??)

Merci par avance pour votre aide

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    vba parle anglais, essaie avec True/False

    Type tes variables :
    Dim Valeur as Boolean (ou as long)
    et précise la propriété : Feuil6.cells (Dom.Row, 57).Value. Des fois on a des surprises avec les propriétés par défaut, surtout quand on débute et qu'on utilise des Variants à tort et à travers.
    (il faut déclarer et typer les variables, ça t'aidera en sortant des erreurs dues à l'inattention)

    eric

    En essayant continuellement, on finit par réussir. 
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
    1. Erwin
       
      Ok je viens de tester autre chose :

      J'ai nommé mes colonnes AC "Dom" et AD "FAIT" dans mon fichier Excel.

      Je déclare :
      Dim Dom as Range
      Dim Fait as Range

      'Ce qui fonctionne :
      For each Dom in Feuil6.Range ("Dom")
      Valeur = Feuil6.cells (Dom.Row, 57) 'ça c'est la concaténation du nom prénom de mon contact pour la msgbox

      If Dom = VRAI Then
      Msgbox "contacter " & Valeur & " pour Dom à valider"
      Else
      End if
      Next


      Lorsque je modifie la ligne if comme cela :
      If Dom = VRAI and Fait = FAUX Then

      ça ne fonctionne plus....

      Si je test le code en remplaçant Dom par Fait ça fonctionne...
      Arghhhhh !!!!!!
      Je pense que je ne suis pas loin mais je n'y arrive pas !!!!!
      Si quelqu'un a une idée !!!!!!

      Merci par avance

      Je cherche juste à faire apparaître un msgbox si valeur colonne AC = VRAI ET valeur colonne AD = FAUX...
      0
  2. Erwin
     
    Merci eriiic pour ta réponse.
    En fait j'ai déjà essayé mais ça fonctionne pas :

    Variable objet ou variable de bloc With non définie

    Que je mette True Fasse ou Vrai faux, avec des "" ou sans...
    je tourne vraiment en rond malheureusement...
    Peut être une autre idée ?
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      C'est True sans " "
      Sans la ligne en erreur et/ou le fichier non
      0
  3. Erwin
     
    Merci Eric pour ta réponse.

    J'ai en effet au préalable déclaré
    Dim Dom as Range,
    Dim Fait as Range

    If Dom.value = True and Fait = fasse Then
    Msgbox "DomRevenus non fait" 'pour simplifier dans un premier temps...

    J'ai toujours le même message malheureusement...

    J'ai testé de déclarer dom et fait en boolean et Long mais cette fois j'ai un message différent : erreur de compilation : qualification incorrect
    Sur ma variable "Dom"

    Si tu as une idée......

    Merci encore
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      J'ai nommé mes colonnes AC "Dom" et AD "FAIT"
      Et si ça marche tu vas cliquer 1.000.000 de fois sur ok pour toute la colonne ?

      Dépose un fichier réduit à l'essentiel sur cjoint.com et colle ici le lien fourni.
      0
      1. Erwin > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        http://www.cjoint.com/c/FHdu73NcErL

        Eric,

        Ci joint le fichier comme convenu.
        Merci encore pour ton aide
        Erwin
        0
    2. Erwin
       
      Ok je fais ça au plus vite
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Trop de mauvaises pratiques pour que je vois ça ce soir.

    Déjà
    Feuil6.Range("Alertes_signature")
    :
    - le nom est défini au niveau classeur, inutile de citer la feuille.
    - tu mets toute la colonne : 1 millions de lignes !
    Remplace par un nom dynamique : Nommer une Plage Dynamique

    If alertesignature = "59" Then

    "59" est une chaine, 59 est un numérique. Ta cellule contient un numérique, tu n'es pas prêt d'avoir le test positif. Ca resoudra sans doute ton pb...

    Et cliquer 10 fois en notant les noms sur un bout de papier est ch...t.
    Propose plutôt une liste "Dossiers 2 mois", "Dossiers 1 mois", "Dossiers 10 jours", etc, filtre et affiche les dossiers concernés dans la bdd, ça serait plus convivial.

    0