Probleme condition If

Signaler
Messages postés
21
Date d'inscription
jeudi 11 août 2011
Statut
Membre
Dernière intervention
22 février 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Salut à tous

J'ai un problème sur une condition If. j'ai une partie qui ne se fait pas.
J'ai la condition qui fonctionne bien jusqu’à la fin sans broncher il ya à juste une partie qui ne se fait pas dans le cas ou la condition est vrai
Voici le code == >

Private Sub CommandButton4_Click()

If ComboBox4 = "OR" Then
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("B2").Select

Sheets("StockRéel2013").Range("I2").Value = ComboBox3.Column(0)
Sheets("StockRéel2013").Range("B2").Value = ComboBox4.Column(0)
Sheets("StockRéel2013").Range("E2").Value = TextBox2.Value
Sheets("StockRéel2013").Range("F2").Value = TextBox5.Value
Sheets("StockRéel2013").Range("G2").Value = TextBox9.Value
Sheets("StockRéel2013").Range("J2").Value = TextBox7.Value
Sheets("StockRéel2013").Range("K2").Value = TextBox8.Value
Sheets("StockRéel2013").Range("M2").Value = ComboBox5
Sheets("StockRéel2013").Range("N2").Value = TextBox10.Value
Sheets("StockRéel2013").Range("A2").Value = TextBox12.Value


Dim num As Integer

Range("C2").Select
num = Range("C3").Value
num = num + 1
Range("C2").Value = num



'c'est à partir d'ici que ça ne fonctionne pas jusqu’à Else qui fonctionne bien

ActivateSheet.IDMACHINES
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("B2").Select
Sheets("IDMACHINES").Range("L7").Value = ComboBox3.Column(0)
Sheets("IDMACHINES").Range("B7").Value = ComboBox4.Column(0)
Sheets("IDMACHINES").Range("E7").Value = TextBox2.Value
'Sheets("IDMACHINES").Range("F7").Value = TextBox5.Value pas besoin
Sheets("IDMACHINES").Range("M7").Value = TextBox9.Value
'Sheets("IDMACHINES").Range("J7").Value = TextBox7.Value pas besoin
'Sheets("IDMACHINES").Range("K7").Value = TextBox8.Value pas besoin
'Sheets("IDMACHINES").Range("M7").Value = ComboBox5 pas besoin
'Sheets("IDMACHINES").Range("N7").Value = TextBox10.Value pas besoin
Sheets("IDMACHINES").Range("A7").Value = TextBox12.Value
Range("C7").Value = Sheets("StockRéel2013").Range("C2").Value

' et la ça refonctionne

Else
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("B2").Select

Sheets("StockRéel2013").Range("I2").Value = ComboBox3.Column(0)
Sheets("StockRéel2013").Range("B2").Value = ComboBox4.Column(0)
Sheets("StockRéel2013").Range("E2").Value = TextBox2.Value
Sheets("StockRéel2013").Range("F2").Value = TextBox5.Value
Sheets("StockRéel2013").Range("G2").Value = TextBox9.Value
Sheets("StockRéel2013").Range("J2").Value = TextBox7.Value
Sheets("StockRéel2013").Range("K2").Value = TextBox8.Value
Sheets("StockRéel2013").Range("M2").Value = ComboBox5
Sheets("StockRéel2013").Range("N2").Value = TextBox10.Value

Range("C2").Select
num = Range("C3").Value
num = num + 1
Range("C2").Value = num

End If

EntrerNewArticle.Hide
End Sub


Si vous avez une idée pour m'orienter, merci d'avance

11 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Pense à utiliser le 3e bouton à droite pour mettre un peu de couleur à ton code et utilise l'indentation pour clarifier le tout...


Dim num As Integer 

Range("C2").Select 
num = Range("C3").Value 
num = num + 1 
Range("C2").Value = num


aussi bien écrire
Range("C2") = Range("C3") + 1


Et ceci
ActivateSheet.IDMACHINES 'Kesssé ?
Plutôt Sheets("IDMACHINES").activate, j'imagine...


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
21
Date d'inscription
jeudi 11 août 2011
Statut
Membre
Dernière intervention
22 février 2013

ok pour Range C2

Et pour Sheets ... activate c se que j avais fait au début mais ça ne change rien
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Je continue à voir des lignes de ce genre :
Sheets("IDMACHINES").Range("L7").Value = ComboBox3. Column(0)

Alors que (ton autre discussion), j'ai pris la peine de t'exposer que la propriété column attendait deux paramètres (celui de la colonne et celui de la ligne).
Et je me suis même efforcé de te montrer un exemple super-clair !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et ça ! :
ActivateSheet.IDMACHINES

C'est quoi, encore ? Ecrit "d'instinct" ? Inventé de toutes pièces ? Essaye de voir si cela peut exister (ton aide VBA ! ton AIDE VBA ! TON AIDE VBA !)
et tu nous dis :
c'est à partir d'ici que ça ne fonctionne pas jusqu’à Else qui fonctionne bien

sans nous souffler le moindre mot sur le fait que tu as un magnifique message d'erreur qui dénonce cette ligne.
Tu disais hier être fatigué.
C'est maintenant moi qui le deviens.
Bonne chance dans tes tâtonnements en dehors des clous (les bases).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut

Si tu as, quelque part dans ton code, des "On Error Resume Next", supprime-les tout de suite : ils te masquent les erreurs et tu passes à côté des problèmes.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)

Bonjour,

If ComboBox4 = "OR" Then 


Trpp se fier à l'interprète (au compilateur) pour boucher les trous dûs à la paresse peut finir par causer des problèmes.

Bonjour,

Je suppose que je fais juste renchérir sur ce que d'autres ont déjà dû te dire.

Pourquoi cette manie de sélectionner des cellules et de ne pas utiliser cette sélection ? Cela donne juste de l'interprétation inutile et une augmentation du temps d'exécution.
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Bonjour,

Et moi je rajouterai le fait de renommer tes controles... textbox2 combobox3 etc etc ce n'est pas très parlant et si tu dois revenir sur le code plus tard il sera difficile de t'y retrouver..

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
21
Date d'inscription
jeudi 11 août 2011
Statut
Membre
Dernière intervention
22 février 2013

Bonjour,
désolé Ucfoutu mais comme ça marché comme ça, je l'ai laissé car je manque vraiment de temps. pour " ActivateSheet.IDMACHINES ", je ne l'ai pas inventer je l'ai trouver sur un forum comme je disais plus au début j'avais bien mis " Sheets("IDMACHINES").activate " mais le code n'allait pas au bout c'est pourquoi j'ai été cherché autre chose qui est de la M.... à première vue. Je change ça tout de suite
Encore une fois désolé mais j'ai AUCUN Msg. d'erreur, le code va jusqu'au bout sans broncher il y juste une partie qui ne se fait pas, c tout. L'explication de "Jack" pourrai l'expliquer mais je ne vois pas de "On Error Resume Next" à moins que cela peu se planquer je ne sais où???

L' interprète n'est pas forcement de la paresse, bon forcément un peu, mais surtout un manque de connaissance. je n'ai pas non plus inventé "If ComboBox4 = "OR" Then " je l'ai récupéré sur l'aide VBA. par contre pour les sélections de cellules je suis entièrement d'accord avec toi, c'est dû à l'interprète et à de la fainéantise de ma part de les enlever sans me douter de ta remarque sur l'augmentation du temps d'exécution. Je change ça tout de suite.

Voici le code avec les 2/3 modif. mais ça ne change pas mon problème :

Private Sub CommandButton4_Click()

If ComboBox4 = "OR" Then
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow

Sheets("StockRéel2013").Range("I2").Value = ComboBox3.Column(0, listindex0)
Sheets("StockRéel2013").Range("B2").Value = ComboBox4.Column(0, listindex0)
Sheets("StockRéel2013").Range("E2").Value = TextBox2.Value
Sheets("StockRéel2013").Range("F2").Value = TextBox5.Value
Sheets("StockRéel2013").Range("G2").Value = TextBox9.Value
Sheets("StockRéel2013").Range("J2").Value = TextBox7.Value
Sheets("StockRéel2013").Range("K2").Value = TextBox8.Value
Sheets("StockRéel2013").Range("M2").Value = ComboBox5
Sheets("StockRéel2013").Range("N2").Value = TextBox10.Value
Sheets("StockRéel2013").Range("A2").Value = TextBox12.Value

Dim num As Integer
Range("C2") = Range("C3") + 1

Sheets("IDMACHINES").Activate

Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow

Sheets("IDMACHINES").Range("L7").Value = ComboBox3.Column(0, listindex0)
Sheets("IDMACHINES").Range("B7").Value = ComboBox4.Column(0, listindex0)
Sheets("IDMACHINES").Range("E7").Value = TextBox2.Value
'Sheets("IDMACHINES").Range("F7").Value = TextBox5.Value pas besoin
Sheets("IDMACHINES").Range("M7").Value = TextBox9.Value
'Sheets("IDMACHINES").Range("J7").Value = TextBox7.Value pas besoin
'Sheets("IDMACHINES").Range("K7").Value = TextBox8.Value pas besoin
'Sheets("IDMACHINES").Range("M7").Value = ComboBox5 pas besoin
'Sheets("IDMACHINES").Range("N7").Value = TextBox10.Value pas besoin
Sheets("IDMACHINES").Range("A7").Value = TextBox12.Value
Range("C7").Value = Sheets("StockRéel2013").Range("C2").Value

Else
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow

Sheets("StockRéel2013").Range("I2").Value = ComboBox3.Column(0, listindex0)
Sheets("StockRéel2013").Range("B2").Value = ComboBox4.Column(0, listindex0)
Sheets("StockRéel2013").Range("E2").Value = TextBox2.Value
Sheets("StockRéel2013").Range("F2").Value = TextBox5.Value
Sheets("StockRéel2013").Range("G2").Value = TextBox9.Value
Sheets("StockRéel2013").Range("J2").Value = TextBox7.Value
Sheets("StockRéel2013").Range("K2").Value = TextBox8.Value
Sheets("StockRéel2013").Range("M2").Value = ComboBox5
Sheets("StockRéel2013").Range("N2").Value = TextBox10.Value

Range("C2") = Range("C3") + 1

End If

EntrerNewArticle.Hide
End Sub

Merci pour vos remarquesss
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et qu'est maintenant listindex0 ?
Et si c'est une variable : où a-t-elle été déclarée ? Où a-t-elle été initialisée ?
Si non initialisée : listindex0 0>> et se réfère donc systématiquement à la première ligne de la combo. A quoi servirait alors une combo si l'on n'en lit systématiquement que la toute 1ère ligne, quelle que puisse être la sélection faite ?
Tu peux expliquer cette étrange "démarche" ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et puis : juste parce que j'ai des principes et que j'attends des autres la même rigueur === >>
Tu as écrit :
pour " ActivateSheet.IDMACHINES ", je ne l'ai pas inventer je l'ai trouver sur un forum

J'attends de toi que tu montres où tu as "trouvé" cette "chose", ainsi écrite.
Si tu ne le fais pas, je te laisserai totalement tomber (question de principe, hein ...)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.