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

if ... then ... excel ne veut pas me comprendre

  • Initiateur de la discussion Initiateur de la discussion panda02
  • 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 !

P

panda02

Guest
Bonjour,


je suis en train de m'arracher les cheveux pour trouver ce qui ne va pas, et je pense que c'est une bétise.
J'ai essayé des guillements ici et là, de tout mettre sur une ligne .. mais ça fonctionne pas correctement.

donc j'ai un userform avec comme code derrière le bouton Ok:

If OptionButton1.Value = True Then
feuille = "masterlijst"
MsgBox "feuille masterlijst"
End If
If OptionButton2.Value = True Then
feuille = "recherche"
MsgBox "feuille 1"
End If

il m'affiche bien le message correspondant à la bonne case quand je click sur OK de mon userForm. Donc a priori je fait pas d'erreur là.

Ensuite j'ai dans ma macro

If feuille = masterlijst Then
MsgBox " bon c'est la master ou pas"
Sheets("masterlijst").Select
lgtitrnl = 2
lg1don = 3
lgtitrfr = 1
End If
If feuille = recherche Then
MsgBox "ben non c'est la feuille 1"
lgtitrnl = 12
lg1don = 13
lgtitrfr = 11
End If

et là il m'affiche d'office les deux messages quelque soit la case que j'ai coché dans mon userform.
donc j'en conclu qu'il ne tient pas compte des IF et qu'il exécute tout le code.
qu'ai-je oublié ?

merci
 
Re : if ... then ... excel ne veut pas me comprendre

Bonjour Panda,
je suis en train de m'arracher les cheveux pour trouver ce qui ne va pas ..........
......... et moi, je suis en train d'arracher les miens pour trouver le fichier
qu'ai-je oublié ?
le fichier pardi ! .... avec des explications concernant le but de la macro

sans celui-ci, le réponses risquent de se faire attendre

à+
Philippe
 
Re : if ... then ... excel ne veut pas me comprendre

Salut panda002,

J'ai essayé en mettant tout ton code dans un évènement CommandButton1_Click() et ça marche en rajoutant les guillemets à "recherche" et "masterlijst".
 
Re : if ... then ... excel ne veut pas me comprendre


je pensais que les experts saurais voir l'erreur dans le code sans nécessité du fichier qui fait 10 mégas et qui contient des infos confidentielles que je ne peux donc metter en ligne. si j'efface tout le contenu le reste de ma macro plante complètement donc pas la peine.

le but de la macro est de générer un certain type de fichier qui dépendra des choix effectué dans le UserForm. Pour faire simple l'utilisateur choisi la feuille sur laquelle il veut récupérer les données et choisi par quel critère il les trie et par quelle critère il les met en forme. Ma macro se contente alors de rajouter selon ces critères le code nécessaire à l'autre programme pour exploiter ces choix.
 
Re : if ... then ... excel ne veut pas me comprendre

Salut panda002,

J'ai essayé en mettant tout ton code dans un évènement CommandButton1_Click() et ça marche en rajoutant les guillemets à "recherche" et "masterlijst".


avec les guillemets il ne m'affiche aucun des deux messages.
et quand il récupère les valeurs lgtitrnl, ... il bugue car elles sont vides
 
Re : if ... then ... excel ne veut pas me comprendre

Re,
avec les guillemets il ne m'affiche aucun des deux messages.

je suis même étonné qu'il n'y ait pas de message d"erreur avec ceci:
MsgBox " bon c'est la master ou pas"


où sont les parenthèses ?
MsgBox (" bon c'est la master ou pas")
et quand il récupère les valeurs lgtitrnl, ... il bugue car elles sont vides
dans le code présenté au post#1 il ne s'agit pas de récupérer les valeurs puisqu'on y découvre : lgtitrnl = 2

.......... et avec ma boule de cristal qui déconne en ce moment, si pas d'exemple concret, 😕


à+
Philippe
 
Re : if ... then ... excel ne veut pas me comprendre

salut tout le monde,

phlaurent55, dans une msgbox les parenthèses ne sont pas obligatoires si le seul argument est le message en lui même.

panda02:

D'après ce que j'imagine (dis moi si je me trompe) les variables ne sont pas déclarées, ou si elles le sont c'est dans la macro et non en début de module.
Si j'ai raison, dès que tu sors de la première macro alors tes variables se réinitialisent (ou n'existent plus... je ne sais pas trop) du coup dans la deuxième macro:
-Sans les quillemets: la variable feuille = 0 puisqu'elle est recréée dans la macro, masterlijst et recherche (sans guillemets) sont considérées comme variables = à 0 >> les deux if se vérifient puisque 0 = 0 = la tête à toto(titi)
- Avec les guillemets: la variable feuille est toujours égale à 0 pour la même raison, donc elle ne peut être égale à "masterlijst" ou "recherche" >> aucun if se vérifie >> aucun message

Bref

1 - Déclare correctement tes variables dans le module et non dans les macros
2 - mes moi des guillemets aux if de la deuxième macro

mikachu

EDIT: si avec si peu d'info j'ai réussi à viser juste, je m'impressionne...
 
Dernière édition:
Re : if ... then ... excel ne veut pas me comprendre

Bonjour,

Code:
If feuille = masterlijst Then
MsgBox " bon c'est la master ou pas"
Sheets("masterlijst").Select
lgtitrnl = 2
lg1don = 3
lgtitrfr = 1
End If
If feuille = recherche Then
MsgBox "ben non c'est la feuille 1"
lgtitrnl = 12
lg1don = 13
lgtitrfr = 11
End If

Par

Code:
select case feuille
  case ""masterlijst""
    MsgBox " bon c'est la master ou pas"
    Sheets(feuille).Select
    lgtitrnl = 2
    lg1don = 3
    lgtitrfr = 1
  case "recherche"
    MsgBox "ben non c'est la feuille 1"
    lgtitrnl = 12
    lg1don = 13
    lgtitrfr = 11
end select


Le problème ne viendrait-il pas que tu donne une chaine de caractère à la variable feuille

Code:
If OptionButton1.Value = True Then
feuille = "masterlijst"
MsgBox "feuille masterlijst"
End If
If OptionButton2.Value = True Then
feuille = "recherche"
MsgBox "feuille 1"
End If


et que plus loin tu teste si cette variable = une variable et non une chaine de caractère :

If feuille = masterlijst Then

il faut
If feuille = "masterlijst" Then
 
Re : if ... then ... excel ne veut pas me comprendre

salut

à première vue tu mélanges les noms des variables avec leur contenu :
avec feuille = "masterlijst" tu auras plus loin, If feuille = "masterlijst" Then
Si... tu n'as que 2 options, tu peux résumer ton code ainsi :
Code:
  If Not OptionButton1 And Not OptionButton2 Then Exit Sub
  feuille = IIf(OptionButton1, "masterlijst", "recherche")
  Sheets(feuille).Select
  lgtitrnl = IIf(OptionButton1, 2, 12) 
  lg1don = IIf(OptionButton1, 3, 13)
  lgtitrfr = IIf(OptionButton1, 1, 11)
  ...
 
Re : if ... then ... excel ne veut pas me comprendre

merci mikachu , homepyrof53 et Si...

j'avoue que je n'avais plus fait de vba depuis plus de 10 ans, du coup j'ai certaines imprécisions sur le code exacte.

Mais vous me confirmez donc qu'il faut les guillemets, je les avais enlevé car je ne comprenais pas pourquoi il ne trouvait pas de correspondance.
Je viens donc de comprendre pourquoi sans les guillemets il trouve vrai tous les tests. J'ai jamais pensé qu'il ne gardait pas les variables d'un à l'autre.

J'avoue ne jamais déclarer mes variables, vu que ça marchait toujours sans le faire. Je tenterai donc de les déclarer proprement cette fois dans le module comme tu dis mikachu (euh c'est où le module ?).

"Si..." dans le cas présenté je n'ai que 2 choix mais pour d'autres parties j'ai jusque 12 choix.

Je testerai de déclarer mes variables et je vous dirai si ça fonctionne. (début de semaine prochaine ...)

Merci
 
Re : if ... then ... excel ne veut pas me comprendre

Bonsour®
😎
alors de la lecture en attendant la semaine prochaine ...
Utiliser les variables en VBA Excel
 
Re : if ... then ... excel ne veut pas me comprendre

Bonjour à tous,

merci de votre collaboration. En effet il m'a suffit de déclarer en début de module
public feuille as string
pour que ça marche.

mais au final j'ai fait autrement, ce qui me permet en plus de me passer de quelques variables: j'interroge dans le module l'état du userform. Si les variables ne passent pas du userform au module, les états du userform le font.
Mon code devient donc

If UserForm3.OptionMasterlijst.Value = True Then
Sheets("masterlijst").Select
lgtitrnl = 2
lg1don = 3
lgtitrfr = 1
End If

If UserForm3.OptionRecherche.Value = True Then
lgtitrnl = 12
lg1don = 13
lgtitrfr = 11
End If


même si au final je n'ai plus besoin de l'explication donnée à mon erreur, ça sert tjrs de comprendre pourquoi

Merci
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
1 K
Réponses
4
Affichages
715
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…