Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pourquoi code fonctionne avec txt pas cbo

4 réponses
Avatar
pauline
Bonjour à tous,
Je tiens a remercier Sitting hoax, michel gaboly et jacquouille pour leur
aide concernant mon problème de condition "si alors sinon" du 24/12/05.
Par contre j'ai fait évoluer le code, mais il ne fonctionne pas pareil par
le biais d'une combobox ou d'un textbox, je m'explique :
txtf est alimenté de 2 façons :
1er- soit par une formule "a1+1" (incrémentation du n° de facture)
2ème- soit par une cbo
le 1er fonctionne, par contre le 2ème ne reconait pas la valeur mise par la
cbo dans la txt et donc passe directement à la 2ème partie du code.
Merci pour vos futur eclaircissements....

4 réponses

Avatar
Michel Gaboly
Bonsoir pauline,

Si nous indiquait ton nouveau code, ou pourrait t'aider + facilement ;-))


Bonjour à tous,
Je tiens a remercier Sitting hoax, michel gaboly et jacquouille pour le ur
aide concernant mon problème de condition "si alors sinon" du 24/12/0 5.
Par contre j'ai fait évoluer le code, mais il ne fonctionne pas parei l par
le biais d'une combobox ou d'un textbox, je m'explique :
txtf est alimenté de 2 façons :
1er- soit par une formule "a1+1" (incrémentation du n° de facture)
2ème- soit par une cbo
le 1er fonctionne, par contre le 2ème ne reconait pas la valeur mise par la
cbo dans la txt et donc passe directement à la 2ème partie du code.
Merci pour vos futur eclaircissements....






--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
pauline
Merci pour ton aide,
Mon txtf est alimenté par combobox,
Vérifie sur feuille "recap" si numéro de fact qui est inscrit dans TXTF est
présent dans colonne A
si oui: Envoie les élements des TXT sur la ligne déjà créée donc, modifie la
facture déjà existante si non: envoie les TXT dans la dernière ligne non
vide et donc, créér une nouvelle fact.


(je récupère bien mes txt mais quand je valide il me crée une nouvelle ligne
avec le même n° de facture et les modifs des txt)
alors que quand j'alimente mon txtf manuellement et modifie cboc change par
txtchange ca marche.


Private Sub CMDVALIDER_Click()

For Each h In Range("A2: A65536")
If h = txtf Then
num = h.Row
Exit For

End If
Next h

If num <> 0 Then
Range("a" & num).Value = txtf
Range("B" & num).Value = TXTNOM
Range("d" & num).Value = TXTV
Range("g" & num).Value = TXTAD
Range("c" & num).Value = txtpr
Range("h" & num).Value = TXTCP
Range("i" & num).Value = TXTVILLE
Range("k" & num).Value = Txtchassis
Range("j" & num).Value = TxtIMAT
Range("M" & num).Value = TXTd1
Range("N" & num).Value = TXTq1
Range("O" & num).Value = TXTP1
Range("P" & num).Value = TXTM1

Else
num2 = Sheets("RECAP").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas
Sheets("RECAP").Range("a" & num2).Value = txtf
Sheets("RECAP").Range("b" & num2).Value = TXTNOM.Text
Sheets("RECAP").Range("D" & num2).Value = TXTV.Text
Sheets("RECAP").Range("G" & num2).Value = TXTAD
Sheets("RECAP").Range("C" & num2).Value = txtpr
Sheets("RECAP").Range("h" & num2).Value = TXTCP
Sheets("RECAP").Range("i" & num2).Value = TXTVILLE
Sheets("RECAP").Range("k" & num2).Value = Txtchassis
Sheets("RECAP").Range("j" & num2).Value = TxtIMAT
Sheets("RECAP").Range("M" & num2).Value = TXTd1
Sheets("RECAP").Range("n" & num2).Value = TXTq1
Sheets("RECAP").Range("O" & num2).Value = TXTP1
Sheets("RECAP").Range("P" & num2).Value = TXTM1

End If
Sheets("recap").Select
Unload Usffact1
End Sub

"Michel Gaboly" a écrit dans le message de news:
%
Bonsoir pauline,

Si nous indiquait ton nouveau code, ou pourrait t'aider + facilement ;-))


Bonjour à tous,
Je tiens a remercier Sitting hoax, michel gaboly et jacquouille pour leur
aide concernant mon problème de condition "si alors sinon" du 24/12/05.
Par contre j'ai fait évoluer le code, mais il ne fonctionne pas pareil par
le biais d'une combobox ou d'un textbox, je m'explique :
txtf est alimenté de 2 façons :
1er- soit par une formule "a1+1" (incrémentation du n° de facture)
2ème- soit par une cbo
le 1er fonctionne, par contre le 2ème ne reconait pas la valeur mise par
la cbo dans la txt et donc passe directement à la 2ème partie du code.
Merci pour vos futur eclaircissements....






--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
Re,

Je t'ai dit hier que le résultat d'un Textbox était du texte, et qu'i l fallait le convertir en nombre pour le comparer à
tes numéros de facture (sauf si test numéros de facture ne sont pas n umériques)

Le problème est peut-être le même avec ton combo, selon la façon dont il est alimenté.

D'autre part, je te conseille de donner des noms + parlants aux contrôl es sur le UserForm : txtf fait penser à un
Textbox et non à un Combo, appelle-le plutôt Cbf

Pourquoi continues-tu à faire une boucle au lieu d'utiliser Application .Match qui va considérablement + vite (1
opération au lieu de plusieurs milliers de passages dns la boucle) ?

Enlève tous les .Value, ils ne servent à rien

Utilise With End With, tu obtiens un code bien + lisible :

Dim Test As Boolean, Num As Long
Test = IsError(Application.Match(CLng(txtf), Sheets("recap").Range ("A:A"), 0))
If Test Then
Num = Sheets("recap").Range("A65536").End(xlUp)(2).Row
Sheets("recap").Range("A" & Num) = CLng(TxtFact)
Else
Num = Application.Match(CLng(TxtFact), Sheets("recap").Ran ge("A:A"), 0)
End If
' Report
With Range("a" & num)
.Value = txtf
.Offset(0, 1) = TXTNOM
.Offset(0, 2) = txtpr
.Offset(0, 3) = TXTV
.Offset(0, 6) = TXTAD
.Offset(0, 7) = TXTCP
.Offset(0, 8) = TXTVILLE
.Offset(0, 9) = TxtIMAT
.Offset(0, 10) = Txtchassis
.Offset(0, 12) = TXTd1
.Offset(0, 13) = TXTq1
.Offset(0, 14) = TXTP1
.Offset(0, 15) = TXTM1
End With

Pour le reste si ce n'est pas confidentiel envoie-moi ton fichier à mic en enlevant "ASupp" ou met-le
sur CJoint, cela sera + simple.


Merci pour ton aide,
Mon txtf est alimenté par combobox,
Vérifie sur feuille "recap" si numéro de fact qui est inscrit dans TXTF est
présent dans colonne A
si oui: Envoie les élements des TXT sur la ligne déjà créée d onc, modifie la
facture déjà existante si non: envoie les TXT dans la dernière li gne non
vide et donc, créér une nouvelle fact.


(je récupère bien mes txt mais quand je valide il me crée une nou velle ligne
avec le même n° de facture et les modifs des txt)
alors que quand j'alimente mon txtf manuellement et modifie cboc change par
txtchange ca marche.


Private Sub CMDVALIDER_Click()

For Each h In Range("A2: A65536")
If h = txtf Then
num = h.Row
Exit For

End If
Next h

If num <> 0 Then
Range("a" & num).Value = txtf
Range("B" & num).Value = TXTNOM
Range("d" & num).Value = TXTV
Range("g" & num).Value = TXTAD
Range("c" & num).Value = txtpr
Range("h" & num).Value = TXTCP
Range("i" & num).Value = TXTVILLE
Range("k" & num).Value = Txtchassis
Range("j" & num).Value = TxtIMAT
Range("M" & num).Value = TXTd1
Range("N" & num).Value = TXTq1
Range("O" & num).Value = TXTP1
Range("P" & num).Value = TXTM1

Else
num2 = Sheets("RECAP").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas
Sheets("RECAP").Range("a" & num2).Value = txtf
Sheets("RECAP").Range("b" & num2).Value = TXTNOM.Text
Sheets("RECAP").Range("D" & num2).Value = TXTV.Text
Sheets("RECAP").Range("G" & num2).Value = TXTAD
Sheets("RECAP").Range("C" & num2).Value = txtpr
Sheets("RECAP").Range("h" & num2).Value = TXTCP
Sheets("RECAP").Range("i" & num2).Value = TXTVILLE
Sheets("RECAP").Range("k" & num2).Value = Txtchassis
Sheets("RECAP").Range("j" & num2).Value = TxtIMAT
Sheets("RECAP").Range("M" & num2).Value = TXTd1
Sheets("RECAP").Range("n" & num2).Value = TXTq1
Sheets("RECAP").Range("O" & num2).Value = TXTP1
Sheets("RECAP").Range("P" & num2).Value = TXTM1

End If
Sheets("recap").Select
Unload Usffact1
End Sub

"Michel Gaboly" a écrit dans le message de news:
%
Bonsoir pauline,

Si nous indiquait ton nouveau code, ou pourrait t'aider + facilement ;- ))



Bonjour à tous,
Je tiens a remercier Sitting hoax, michel gaboly et jacquouille pour le ur
aide concernant mon problème de condition "si alors sinon" du 24/12/0 5.
Par contre j'ai fait évoluer le code, mais il ne fonctionne pas parei l par
le biais d'une combobox ou d'un textbox, je m'explique :
txtf est alimenté de 2 façons :
1er- soit par une formule "a1+1" (incrémentation du n° de facture)
2ème- soit par une cbo
le 1er fonctionne, par contre le 2ème ne reconait pas la valeur mise par
la cbo dans la txt et donc passe directement à la 2ème partie du co de.
Merci pour vos futur eclaircissements....










--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
pauline
Bonsoir Michel,
Juste pour savoir si tu as bien reçu mon fichier, je ne suis pas trop sure
de l'adresse à laquelle je l'ai envoyé.

Bonne soirée
"Michel Gaboly" a écrit dans le message de news:
%
Re,

Je t'ai dit hier que le résultat d'un Textbox était du texte, et qu'il
fallait le convertir en nombre pour le comparer à
tes numéros de facture (sauf si test numéros de facture ne sont pas
numériques)

Le problème est peut-être le même avec ton combo, selon la façon dont il est
alimenté.

D'autre part, je te conseille de donner des noms + parlants aux contrôles
sur le UserForm : txtf fait penser à un
Textbox et non à un Combo, appelle-le plutôt Cbf

Pourquoi continues-tu à faire une boucle au lieu d'utiliser
Application.Match qui va considérablement + vite (1
opération au lieu de plusieurs milliers de passages dns la boucle) ?

Enlève tous les .Value, ils ne servent à rien

Utilise With End With, tu obtiens un code bien + lisible :

Dim Test As Boolean, Num As Long
Test = IsError(Application.Match(CLng(txtf),
Sheets("recap").Range("A:A"), 0))
If Test Then
Num = Sheets("recap").Range("A65536").End(xlUp)(2).Row
Sheets("recap").Range("A" & Num) = CLng(TxtFact)
Else
Num = Application.Match(CLng(TxtFact),
Sheets("recap").Range("A:A"), 0)
End If
' Report
With Range("a" & num)
.Value = txtf
.Offset(0, 1) = TXTNOM
.Offset(0, 2) = txtpr
.Offset(0, 3) = TXTV
.Offset(0, 6) = TXTAD
.Offset(0, 7) = TXTCP
.Offset(0, 8) = TXTVILLE
.Offset(0, 9) = TxtIMAT
.Offset(0, 10) = Txtchassis
.Offset(0, 12) = TXTd1
.Offset(0, 13) = TXTq1
.Offset(0, 14) = TXTP1
.Offset(0, 15) = TXTM1
End With

Pour le reste si ce n'est pas confidentiel envoie-moi ton fichier à
en enlevant "ASupp" ou met-le
sur CJoint, cela sera + simple.


Merci pour ton aide,
Mon txtf est alimenté par combobox,
Vérifie sur feuille "recap" si numéro de fact qui est inscrit dans TXTF
est présent dans colonne A
si oui: Envoie les élements des TXT sur la ligne déjà créée donc, modifie
la facture déjà existante si non: envoie les TXT dans la dernière ligne
non vide et donc, créér une nouvelle fact.


(je récupère bien mes txt mais quand je valide il me crée une nouvelle
ligne avec le même n° de facture et les modifs des txt)
alors que quand j'alimente mon txtf manuellement et modifie cboc change
par txtchange ca marche.


Private Sub CMDVALIDER_Click()

For Each h In Range("A2: A65536")
If h = txtf Then
num = h.Row
Exit For

End If
Next h

If num <> 0 Then
Range("a" & num).Value = txtf
Range("B" & num).Value = TXTNOM
Range("d" & num).Value = TXTV
Range("g" & num).Value = TXTAD
Range("c" & num).Value = txtpr
Range("h" & num).Value = TXTCP
Range("i" & num).Value = TXTVILLE
Range("k" & num).Value = Txtchassis
Range("j" & num).Value = TxtIMAT
Range("M" & num).Value = TXTd1
Range("N" & num).Value = TXTq1
Range("O" & num).Value = TXTP1
Range("P" & num).Value = TXTM1

Else
num2 = Sheets("RECAP").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas
Sheets("RECAP").Range("a" & num2).Value = txtf
Sheets("RECAP").Range("b" & num2).Value = TXTNOM.Text
Sheets("RECAP").Range("D" & num2).Value = TXTV.Text
Sheets("RECAP").Range("G" & num2).Value = TXTAD
Sheets("RECAP").Range("C" & num2).Value = txtpr
Sheets("RECAP").Range("h" & num2).Value = TXTCP
Sheets("RECAP").Range("i" & num2).Value = TXTVILLE
Sheets("RECAP").Range("k" & num2).Value = Txtchassis
Sheets("RECAP").Range("j" & num2).Value = TxtIMAT
Sheets("RECAP").Range("M" & num2).Value = TXTd1
Sheets("RECAP").Range("n" & num2).Value = TXTq1
Sheets("RECAP").Range("O" & num2).Value = TXTP1
Sheets("RECAP").Range("P" & num2).Value = TXTM1

End If
Sheets("recap").Select
Unload Usffact1
End Sub

"Michel Gaboly" a écrit dans le message de
news: %
Bonsoir pauline,

Si nous indiquait ton nouveau code, ou pourrait t'aider + facilement ;-))



Bonjour à tous,
Je tiens a remercier Sitting hoax, michel gaboly et jacquouille pour leur
aide concernant mon problème de condition "si alors sinon" du 24/12/05.
Par contre j'ai fait évoluer le code, mais il ne fonctionne pas pareil par
le biais d'une combobox ou d'un textbox, je m'explique :
txtf est alimenté de 2 façons :
1er- soit par une formule "a1+1" (incrémentation du n° de facture)
2ème- soit par une cbo
le 1er fonctionne, par contre le 2ème ne reconait pas la valeur mise par
la cbo dans la txt et donc passe directement à la 2ème partie du code.
Merci pour vos futur eclaircissements....










--
Cordialement,

Michel Gaboly
www.gaboly.com