If et and if VBA

Fermé
Erwin - 2 août 2016 à 22:47
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 3 août 2016 à 23:57
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

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 2/08/2016 à 23:15
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
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
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 2/08/2016 à 23:20
C'est True sans " "
Sans la ligne en erreur et/ou le fichier non
0
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 août 2016 à 00:48
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
Erwin > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
3 août 2016 à 23:02
http://www.cjoint.com/c/FHdu73NcErL

Eric,

Ci joint le fichier comme convenu.
Merci encore pour ton aide
Erwin
0
Ok je fais ça au plus vite
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 août 2016 à 23:57
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