OVH Cloud OVH Cloud

format de données via combobox

8 réponses
Avatar
chris
Bonsoir à tous,
J'ai un petit soucis qui m'agace depuis 1 heure, à mon avis en 5mn vous
l'aurez résolu....
J'ai crée une combobox dans un formulaire qui alimente plusieurs textbox,
j'usque là tous va bien,
j'ai crée une boucle lui disant :
1er - si le nom du client (txtnom1) est déjà existant dans mon fichier
("client") range les textbox y compris les éléments modifié dans la ligne
déjà existante
2em- ou si le nom du client n'existe pas crée une nouvelle ligne en
alimentant mon fichier avec les nouvelles données.
Le 2em fonctionne mais pas le 1er, je pense que c'est un problème de
répurération de donnée via la cbo....... enfin je ne sais plus ce que je
pense....

Merci pour votre préciseuse aide.....


voici un petit exemple de mon prog

Private Sub cboclient_Change()

'récupère les informations saisies ou présentes dans la combobox et les
insere dans les txt
txtciv1.Value = Application.Index(Range("client!civ"), CBOCLIENT.ListIndex +
1)
txtnom1.Value = Application.Index(Range("client!nom"), CBOCLIENT.ListIndex +
1)
txtpr1.Value = Application.Index(Range("client!prenom"), CBOCLIENT.ListIndex
+ 1)
txtad1.Value = Application.Index(Range("client!ad"), CBOCLIENT.ListIndex +
1)
txtville1.Value = Application.Index(Range("client!ville"),
CBOCLIENT.ListIndex + 1)
txtcp1.Value = Application.Index(Range("client!cp"), CBOCLIENT.ListIndex +
1)
txtel1.Value = Application.Index(Range("client!tel"), CBOCLIENT.ListIndex +
1)

End Sub



Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier les
élements dans la ligne correspondante
For Each h In Range("A1:A65536")
If h = txtnom1 Then
num = h.Row
Exit For
End If
Next h
If num <> 0 Then
Range("C" & num).Value = txtciv1
Range("A" & num).Value = txtnom1
Range("B" & num).Value = txtpr1
Range("d" & num).Value = txtad1
Range("f" & num).Value = txtville1
Range("e" & num).Value = txtcp1
Range("g" & num).Value = txtel1

'SINON: si le nom du client n'est pas dans la colonne A de feuille "client"
donc envoi les infos à la suite (à la dernière ligne vide)
Else
num2 = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas
Sheets("client").Range("C" & num2).Value = txtciv1
Sheets("client").Range("A" & num2).Value = txtnom1
Sheets("client").Range("B" & num2).Value = txtpr1
Sheets("client").Range("d" & num2).Value = txtad1
Sheets("client").Range("f" & num2).Value = txtville1
Sheets("client").Range("e" & num2).Value = txtcp1
Sheets("client").Range("g" & num2).Value = txtel1

Unload USFNEW

End Sub




begin 666 p.gif
M1TE&.#EAH0`1`( ````3S/___R'Y! $```$`+ ````"A`!$```+_C(^IR^T/
MHYRTVHNSWKS[#X9B!I0.D*"(JJBL]"[ES,54;#_Y>>P!GF*X*C[#JSA:!9._
M)>UGZCFC-%34>+4VH;9CTY6%8J7;K_BL-&)96JYZ+0VWR$ E^TU];Z_ENCJ/
M!X:G9R581M@WEC@4. AW=\@UT[:'Z+0D,VE9:<EHMHD("4E'ZABG&0DDNHG:
MQ:=')NFYNAC;M=>Z`DC+&3>7YNO(Z_D;:UM,>S=Z2PP;/'R<F!J4S&CHYQ?=
MFQPLC0G]UVG\!*?H#,:FQ6?2[(8Y+B>=SJX-['[X-%_/Q-_OCS$IH,"!! L:
:/(@PH<*%#!LJ_ <QHL2)%"M:O(@Q8X8"`#L`
`
end

8 réponses

Avatar
docm
Bonjour chris

Il serait plus simple de remplacer les syntaxes du genre
Range("A" & num).Value = txtnom1
par quelque chose de plus clair comme
Cells(num, Range("nom").Column).Value = txtnom1

et remplace aussi
For Each h In Range("A1:A65536")
par
For Each h In Range("nom")

docm

"chris" a écrit dans le message de news:

Bonsoir à tous,
J'ai un petit soucis qui m'agace depuis 1 heure, à mon avis en 5mn vous
l'aurez résolu....
J'ai crée une combobox dans un formulaire qui alimente plusieurs textbox,
j'usque là tous va bien,
j'ai crée une boucle lui disant :
1er - si le nom du client (txtnom1) est déjà existant dans mon fichier
("client") range les textbox y compris les éléments modifié dans la ligne
déjà existante
2em- ou si le nom du client n'existe pas crée une nouvelle ligne en
alimentant mon fichier avec les nouvelles données.
Le 2em fonctionne mais pas le 1er, je pense que c'est un problème de
répurération de donnée via la cbo....... enfin je ne sais plus ce que je
pense....

Merci pour votre préciseuse aide.....


voici un petit exemple de mon prog

Private Sub cboclient_Change()

'récupère les informations saisies ou présentes dans la combobox et les
insere dans les txt
txtciv1.Value = Application.Index(Range("client!civ"), CBOCLIENT.ListIndex
+

1)
txtnom1.Value = Application.Index(Range("client!nom"), CBOCLIENT.ListIndex
+

1)
txtpr1.Value = Application.Index(Range("client!prenom"),
CBOCLIENT.ListIndex

+ 1)
txtad1.Value = Application.Index(Range("client!ad"), CBOCLIENT.ListIndex +
1)
txtville1.Value = Application.Index(Range("client!ville"),
CBOCLIENT.ListIndex + 1)
txtcp1.Value = Application.Index(Range("client!cp"), CBOCLIENT.ListIndex +
1)
txtel1.Value = Application.Index(Range("client!tel"), CBOCLIENT.ListIndex
+

1)

End Sub



Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier les
élements dans la ligne correspondante
For Each h In Range("A1:A65536")
If h = txtnom1 Then
num = h.Row
Exit For
End If
Next h
If num <> 0 Then
Range("C" & num).Value = txtciv1
Range("A" & num).Value = txtnom1
Range("B" & num).Value = txtpr1
Range("d" & num).Value = txtad1
Range("f" & num).Value = txtville1
Range("e" & num).Value = txtcp1
Range("g" & num).Value = txtel1

'SINON: si le nom du client n'est pas dans la colonne A de feuille
"client"

donc envoi les infos à la suite (à la dernière ligne vide)
Else
num2 = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas
Sheets("client").Range("C" & num2).Value = txtciv1
Sheets("client").Range("A" & num2).Value = txtnom1
Sheets("client").Range("B" & num2).Value = txtpr1
Sheets("client").Range("d" & num2).Value = txtad1
Sheets("client").Range("f" & num2).Value = txtville1
Sheets("client").Range("e" & num2).Value = txtcp1
Sheets("client").Range("g" & num2).Value = txtel1

Unload USFNEW

End Sub







Avatar
chris
Merci docm, je m'y met de suite je vais suivre tes conseils
"docm" a écrit dans le message de news:
ep$
Bonjour chris

Il serait plus simple de remplacer les syntaxes du genre
Range("A" & num).Value = txtnom1
par quelque chose de plus clair comme
Cells(num, Range("nom").Column).Value = txtnom1

et remplace aussi
For Each h In Range("A1:A65536")
par
For Each h In Range("nom")

docm

"chris" a écrit dans le message de news:

Bonsoir à tous,
J'ai un petit soucis qui m'agace depuis 1 heure, à mon avis en 5mn vous
l'aurez résolu....
J'ai crée une combobox dans un formulaire qui alimente plusieurs
textbox,


j'usque là tous va bien,
j'ai crée une boucle lui disant :
1er - si le nom du client (txtnom1) est déjà existant dans mon fichier
("client") range les textbox y compris les éléments modifié dans la
ligne


déjà existante
2em- ou si le nom du client n'existe pas crée une nouvelle ligne en
alimentant mon fichier avec les nouvelles données.
Le 2em fonctionne mais pas le 1er, je pense que c'est un problème de
répurération de donnée via la cbo....... enfin je ne sais plus ce que
je


pense....

Merci pour votre préciseuse aide.....


voici un petit exemple de mon prog

Private Sub cboclient_Change()

'récupère les informations saisies ou présentes dans la combobox et les
insere dans les txt
txtciv1.Value = Application.Index(Range("client!civ"),
CBOCLIENT.ListIndex


+
1)
txtnom1.Value = Application.Index(Range("client!nom"),
CBOCLIENT.ListIndex


+
1)
txtpr1.Value = Application.Index(Range("client!prenom"),
CBOCLIENT.ListIndex

+ 1)
txtad1.Value = Application.Index(Range("client!ad"),
CBOCLIENT.ListIndex +


1)
txtville1.Value = Application.Index(Range("client!ville"),
CBOCLIENT.ListIndex + 1)
txtcp1.Value = Application.Index(Range("client!cp"),
CBOCLIENT.ListIndex +


1)
txtel1.Value = Application.Index(Range("client!tel"),
CBOCLIENT.ListIndex


+
1)

End Sub



Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier les
élements dans la ligne correspondante
For Each h In Range("A1:A65536")
If h = txtnom1 Then
num = h.Row
Exit For
End If
Next h
If num <> 0 Then
Range("C" & num).Value = txtciv1
Range("A" & num).Value = txtnom1
Range("B" & num).Value = txtpr1
Range("d" & num).Value = txtad1
Range("f" & num).Value = txtville1
Range("e" & num).Value = txtcp1
Range("g" & num).Value = txtel1

'SINON: si le nom du client n'est pas dans la colonne A de feuille
"client"

donc envoi les infos à la suite (à la dernière ligne vide)
Else
num2 = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à
la


dernière ligne vide en commencant par le bas
Sheets("client").Range("C" & num2).Value = txtciv1
Sheets("client").Range("A" & num2).Value = txtnom1
Sheets("client").Range("B" & num2).Value = txtpr1
Sheets("client").Range("d" & num2).Value = txtad1
Sheets("client").Range("f" & num2).Value = txtville1
Sheets("client").Range("e" & num2).Value = txtcp1
Sheets("client").Range("g" & num2).Value = txtel1

Unload USFNEW

End Sub













begin 666 p.gif
M1TE&.#EAH0`1`( ````3S/___R'Y! $```$`+ ````"A`!$```+_C(^IR^T/
MHYRTVHNSWKS[#X9B!I0.D*"(JJBL]"[ES,54;#_Y>>P!GF*X*C[#JSA:!9._
M)>UGZCFC-%34>+4VH;9CTY6%8J7;K_BL-&)96JYZ+0VWR$ E^TU];Z_ENCJ/
M!X:@4. AW=@UT[:'Z+0D,VE9:<EHMHD("4E'ZABG&0DDNHG:
MQ:=')NFYNAC;M=>Z`DC+&3>7YNO(Z_D;:UM,>S=Z2PP;/'R<F!J4S&CHYQ? MFQPLC0G]UVG!*?H#,:FQ6?2[(8Y+B>=SJX-['[X-%_/Q-_OCS$IH,"!! L:
:/(@PH<*%#!LJ_ <QHL2)%"M:O(@Q8X8"`#L`
`
end


Avatar
docm
C'est un plaisir.

docm
Avatar
chris
Je suis désolée de t'embeter avec ca mais ca ne fonctionne pas, il ne veux
pas prendre en compte les modifs lorsque je rappel mes données via la
cbo.....
"docm" a écrit dans le message de news:

C'est un plaisir.

docm







begin 666 p.gif
M1TE&.#EAH0`1`( ````3S/___R'Y! $```$`+ ````"A`!$```+_C(^IR^T/
MHYRTVHNSWKS[#X9B!I0.D*"(JJBL]"[ES,54;#_Y>>P!GF*X*C[#JSA:!9._
M)>UGZCFC-%34>+4VH;9CTY6%8J7;K_BL-&)96JYZ+0VWR$ E^TU];Z_ENCJ/
M!X:@4. AW=@UT[:'Z+0D,VE9:<EHMHD("4E'ZABG&0DDNHG:
MQ:=')NFYNAC;M=>Z`DC+&3>7YNO(Z_D;:UM,>S=Z2PP;/'R<F!J4S&CHYQ? MFQPLC0G]UVG!*?H#,:FQ6?2[(8Y+B>=SJX-['[X-%_/Q-_OCS$IH,"!! L:
:/(@PH<*%#!LJ_ <QHL2)%"M:O(@Q8X8"`#L`
`
end

Avatar
docm
Si ton fichier n'est pas trop gros ni confidentiel,
pourrais-tu le mettre sur
http://cjoint.com/
pour qu'on y jette un oeil.

docm


"chris" a écrit dans le message de news:

Je suis désolée de t'embeter avec ca mais ca ne fonctionne pas, il ne
veux

pas prendre en compte les modifs lorsque je rappel mes données via la
cbo.....
"docm" a écrit dans le message de news:

C'est un plaisir.

docm











Avatar
docm
Ceci semble fonctionner:
Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier les
élements dans la ligne correspondante

For Each h In Range("nom")

If h = txtnom1 Then
num = h.Row

Exit For

End If

Next h

If num = 0 Then

'si le nom du client n'est pas dans la colonne A de feuille "client" donc
envoi les infos à la suite (à la dernière ligne vide)

num = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas

End If

Sheets("client").Cells(num, Range("nom").Column).Value = txtnom1.Value
Sheets("client").Cells(num, Range("civ").Column).Value = txtciv1.Value
'Etc...

Unload USFNEW

End Sub

docm

"chris" a écrit dans le message de news:

Je suis désolée de t'embeter avec ca mais ca ne fonctionne pas, il ne
veux

pas prendre en compte les modifs lorsque je rappel mes données via la
cbo.....
"docm" a écrit dans le message de news:

C'est un plaisir.

docm











Avatar
chris
Merci, Merci ça fonctionne impec, c'est moi qui avait mal saisie tes
données....
Bonne soirée
"docm" a écrit dans le message de news:

Ceci semble fonctionner:
Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier les
élements dans la ligne correspondante

For Each h In Range("nom")

If h = txtnom1 Then
num = h.Row

Exit For

End If

Next h

If num = 0 Then

'si le nom du client n'est pas dans la colonne A de feuille "client"
donc

envoi les infos à la suite (à la dernière ligne vide)

num = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à la
dernière ligne vide en commencant par le bas

End If

Sheets("client").Cells(num, Range("nom").Column).Value = txtnom1.Value
Sheets("client").Cells(num, Range("civ").Column).Value = txtciv1.Value
'Etc...

Unload USFNEW

End Sub

docm

"chris" a écrit dans le message de news:

Je suis désolée de t'embeter avec ca mais ca ne fonctionne pas, il ne
veux

pas prendre en compte les modifs lorsque je rappel mes données via la
cbo.....
"docm" a écrit dans le message de news:

C'est un plaisir.

docm
















begin 666 p.gif
M1TE&.#EAH0`1`( ````3S/___R'Y! $```$`+ ````"A`!$```+_C(^IR^T/
MHYRTVHNSWKS[#X9B!I0.D*"(JJBL]"[ES,54;#_Y>>P!GF*X*C[#JSA:!9._
M)>UGZCFC-%34>+4VH;9CTY6%8J7;K_BL-&)96JYZ+0VWR$ E^TU];Z_ENCJ/
M!X:@4. AW=@UT[:'Z+0D,VE9:<EHMHD("4E'ZABG&0DDNHG:
MQ:=')NFYNAC;M=>Z`DC+&3>7YNO(Z_D;:UM,>S=Z2PP;/'R<F!J4S&CHYQ? MFQPLC0G]UVG!*?H#,:FQ6?2[(8Y+B>=SJX-['[X-%_/Q-_OCS$IH,"!! L:
:/(@PH<*%#!LJ_ <QHL2)%"M:O(@Q8X8"`#L`
`
end



Avatar
docm
Bonne soirée à toi.

"chris" a écrit dans le message de news:

Merci, Merci ça fonctionne impec, c'est moi qui avait mal saisie tes
données....
Bonne soirée
"docm" a écrit dans le message de news:

Ceci semble fonctionner:
Private Sub CMDVALIDER1_Click()
'Condition si nom client est déjà présent dans "client" va modifier
les


élements dans la ligne correspondante

For Each h In Range("nom")

If h = txtnom1 Then
num = h.Row

Exit For

End If

Next h

If num = 0 Then

'si le nom du client n'est pas dans la colonne A de feuille "client"
donc

envoi les infos à la suite (à la dernière ligne vide)

num = Sheets("client").Range("A65536").End(xlUp).Row + 1 'se place à
la


dernière ligne vide en commencant par le bas

End If

Sheets("client").Cells(num, Range("nom").Column).Value = txtnom1.Value
Sheets("client").Cells(num, Range("civ").Column).Value = txtciv1.Value
'Etc...

Unload USFNEW

End Sub

docm

"chris" a écrit dans le message de news:

Je suis désolée de t'embeter avec ca mais ca ne fonctionne pas, il
ne



veux
pas prendre en compte les modifs lorsque je rappel mes données via la
cbo.....
"docm" a écrit dans le message de news:

C'est un plaisir.

docm