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

ajout dans un textbox

4 réponses
Avatar
Anaïs
Bonjour !

J’ai une liste de données avec 5 colonnes ( nom, responsable, ville,
téléphone, fax)
Cependant il se peut que dans cette liste certaine cellules soient vide.
J’ai crée un userform permettant de visualiser chaque contenu avec un
combobox pour le nom et des textbox pour les autres champs. Lorsque
l’utilisateur choisi un nom dans le combobox les autres champs s’affichent
dans les textbox.

Désormais je voudrai que l’utilisateur puisse remplir les textbox qui sont
vides ou modifier celles déjà existantes.

Par exemple si j’ai des cellules remplis en c1,c2,c4,c5, mon userform, me
montre bien le Nom ( dans ma combobox ) et affiche automatiquement le
responsable, le téléphone et le fax, le textbox de ville est vide.

Comment faire pour que un nouvel ajout dans un textbox vienne remplir ma
liste en respectant les autres données ?

Merci par avance

ANAIS

4 réponses

Avatar
anomymousA
bonjour,

je ne connais pas ton code, mais je suppose que si tu récupères tes données
de ligne en fonction du nom , tu es donc capable de récupérer l'adresse du
champ "nom" qui est concerné (N° de ligne et de colonne correspondant au nom
selectionné p.e $A$5).
En conséquence, le + simple est de créer un textbox invisible pour
l'utilisateur ( par la propriété visibleúlse) et de le nourrir de l'adresse
p.e $A$5 ) puis de faire des procédures evenementielles Textbox_Exit pour
chacun des textbox visibles ( ville, tel....).

A chaque fois que tu sortiras d'un textbox , la procédure evenementielle
demande à VBA d'aller écrire la valeur du TextBox dans la cellule
correspondante.

Exemple: imaginons que le textbox invisible s'appelle txtboxinv et que tu
changes le textbox de ville qui s'appelle TextBoxVille.
Le textbox txtboxinv contient $A$5.

tu écris

Private sub TextBoxVille_Exit()

Application.enableveventsúlse

Range(cstr(Me.TextBoxinv.Value)).Offset(0, X).value=textboxVille.value

Application.enablevevents=true

end

les instructions Application.enablevents ne sont pas nécéssaires si tu n'as
pas mis de procédures evenementielles de feuille notamment Change. Si tu n'en
as pas , tu peux te passer de ces instructions sauf si tu y vois un interêt
particulier.
le fait de mettre cstr devant Me.TextBoxinv.Value n'est pas absolument
nécessaire mais sait-on jamais.
la valeur X dans Offset(0, X) correpond au nombre de colonnes à décaler par
rapport à la colonne de l'adresse contenue dans textboxinv. Si par exemple le
champ ville est à 2 colonnes du champ non, il faudra indiquer 2 pour X.

Il faut faire autant de textbox_Exit que de controles textbox car il est
impossible faire un module de classe sur l'evenement Exit d'un textbox.

Attention à bien rafraichir le controle textboxinv à chaque selection d'un
nom différent.
Enfin, il faudra peut-être mettre des controles d'erreur au cas où un champ
nom n'est pas selectionné et donc un textboxinv qui n'est pas nourri car
l'affectation d'un range avec une référence vide déclencherait une erreur.

A+


Bonjour !

J’ai une liste de données avec 5 colonnes ( nom, responsable, ville,
téléphone, fax)
Cependant il se peut que dans cette liste certaine cellules soient vide.
J’ai crée un userform permettant de visualiser chaque contenu avec un
combobox pour le nom et des textbox pour les autres champs. Lorsque
l’utilisateur choisi un nom dans le combobox les autres champs s’affichent
dans les textbox.

Désormais je voudrai que l’utilisateur puisse remplir les textbox qui sont
vides ou modifier celles déjà existantes.

Par exemple si j’ai des cellules remplis en c1,c2,c4,c5, mon userform, me
montre bien le Nom ( dans ma combobox ) et affiche automatiquement le
responsable, le téléphone et le fax, le textbox de ville est vide.

Comment faire pour que un nouvel ajout dans un textbox vienne remplir ma
liste en respectant les autres données ?

Merci par avance

ANAIS



Avatar
Hervé
Cela m'intéresse également
t'es trop balèze !
@ +
Hervé

"anomymousA" a écrit dans le message
de news:
bonjour,

je ne connais pas ton code, mais je suppose que si tu récupères tes
données
de ligne en fonction du nom , tu es donc capable de récupérer l'adresse du
champ "nom" qui est concerné (N° de ligne et de colonne correspondant au
nom
selectionné p.e $A$5).
En conséquence, le + simple est de créer un textbox invisible pour
l'utilisateur ( par la propriété visibleúlse) et de le nourrir de
l'adresse
p.e $A$5 ) puis de faire des procédures evenementielles Textbox_Exit pour
chacun des textbox visibles ( ville, tel....).

A chaque fois que tu sortiras d'un textbox , la procédure evenementielle
demande à VBA d'aller écrire la valeur du TextBox dans la cellule
correspondante.

Exemple: imaginons que le textbox invisible s'appelle txtboxinv et que tu
changes le textbox de ville qui s'appelle TextBoxVille.
Le textbox txtboxinv contient $A$5.

tu écris

Private sub TextBoxVille_Exit()

Application.enableveventsúlse

Range(cstr(Me.TextBoxinv.Value)).Offset(0, X).value=textboxVille.value

Application.enablevevents=true

end

les instructions Application.enablevents ne sont pas nécéssaires si tu
n'as
pas mis de procédures evenementielles de feuille notamment Change. Si tu
n'en
as pas , tu peux te passer de ces instructions sauf si tu y vois un
interêt
particulier.
le fait de mettre cstr devant Me.TextBoxinv.Value n'est pas absolument
nécessaire mais sait-on jamais.
la valeur X dans Offset(0, X) correpond au nombre de colonnes à décaler
par
rapport à la colonne de l'adresse contenue dans textboxinv. Si par exemple
le
champ ville est à 2 colonnes du champ non, il faudra indiquer 2 pour X.

Il faut faire autant de textbox_Exit que de controles textbox car il est
impossible faire un module de classe sur l'evenement Exit d'un textbox.

Attention à bien rafraichir le controle textboxinv à chaque selection d'un
nom différent.
Enfin, il faudra peut-être mettre des controles d'erreur au cas où un
champ
nom n'est pas selectionné et donc un textboxinv qui n'est pas nourri car
l'affectation d'un range avec une référence vide déclencherait une erreur.

A+


Bonjour !

J'ai une liste de données avec 5 colonnes ( nom, responsable, ville,
téléphone, fax)
Cependant il se peut que dans cette liste certaine cellules soient vide.
J'ai crée un userform permettant de visualiser chaque contenu avec un
combobox pour le nom et des textbox pour les autres champs. Lorsque
l'utilisateur choisi un nom dans le combobox les autres champs s'affichent
dans les textbox.

Désormais je voudrai que l'utilisateur puisse remplir les textbox qui
sont
vides ou modifier celles déjà existantes.

Par exemple si j'ai des cellules remplis en c1,c2,c4,c5, mon userform, me
montre bien le Nom ( dans ma combobox ) et affiche automatiquement le
responsable, le téléphone et le fax, le textbox de ville est vide.

Comment faire pour que un nouvel ajout dans un textbox vienne remplir ma
liste en respectant les autres données ?

Merci par avance

ANAIS





Avatar
Anaïs
Merci!

Malheureusement le code ne fonctionne pas, en effet un message d'erreur
apparait :
"La déclaration de la procédure ne correspond pas à la description de
l'événement ou de la procédure du meme nom"

cela me met en surbrillance la 1er ligne :"Private Sub TextBoxVille_Exit()"

De plus la fin du code est-elle seulement "end"??? ou "end sub" ou "exit
sub"???

Merci encore de votre aide
Anaïs
Avatar
anomymousA
re,

c'est possible que j'ai mal othographié le nom de ton controle Textboxville.
Il est clair que le nom de la procédure evenementielle doit porter le même
nom que textbox auquel il se rattache.
Par ailleurs, effectivement c'est End sub et pas end. Problème de
copier-coller.

A+



Merci!

Malheureusement le code ne fonctionne pas, en effet un message d'erreur
apparait :
"La déclaration de la procédure ne correspond pas à la description de
l'événement ou de la procédure du meme nom"

cela me met en surbrillance la 1er ligne :"Private Sub TextBoxVille_Exit()"

De plus la fin du code est-elle seulement "end"??? ou "end sub" ou "exit
sub"???

Merci encore de votre aide
Anaïs