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

Formulaire de saisie

23 réponses
Avatar
guy boily
Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.



--
boily_SLSJ

10 réponses

1 2 3
Avatar
JB
Bonjour,


[B65000].End(xlUp).Offset(1, 0) = Me.txtnom.Text
[B65000].End(xlUp).Offset(0, 4) = Me.TextChic


JB
http://boisgontierjacques.free.fr

On 26 sep, 18:22, guy boily
wrote:
Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validati on"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, d ès que
je valide un autre enregistrement et que mon précédent "txtchic" é tait
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précéden te.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même l igne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.

--
boily_SLSJ


Avatar
MichDenis
Dim DerLig As Long

With Worksheets("NomDeTaFeuille")
On Error Resume Next
DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

.Range("b" & DerLig).Value = Me.txtnom.Text
.Range("c" & DerLig).Value = Me.Txtcp12.Text
.Range("d" & DerLig).Value = Me.Txtdepistage.Text
.Range("e" & DerLig).Value = Me.txtreference.Text
.Range("f" & DerLig).Value = Me.txtchic.Value
.Range("g" & DerLig).Value = Me.txtjonq.Value
.Range("h" & DerLig).Value = Me.txtbaie.Value
End With




"guy boily" a écrit dans le message de news:

Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.



--
boily_SLSJ
Avatar
MichDenis
Pour ton information, la ligne de commande
On Error Resume Next est présente seulement
pour éviter la procédure de se planter si la feuille
contenant les colonnes "B:H" sont complètement vides.
La méthode Find génère une erreur de type 91 lorsqu'elle
ne trouve pas ce qu'elle cherche.

Sinon, elle n'a pas sa raison d'être.


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

Dim DerLig As Long

With Worksheets("NomDeTaFeuille")
On Error Resume Next
DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

.Range("b" & DerLig).Value = Me.txtnom.Text
.Range("c" & DerLig).Value = Me.Txtcp12.Text
.Range("d" & DerLig).Value = Me.Txtdepistage.Text
.Range("e" & DerLig).Value = Me.txtreference.Text
.Range("f" & DerLig).Value = Me.txtchic.Value
.Range("g" & DerLig).Value = Me.txtjonq.Value
.Range("h" & DerLig).Value = Me.txtbaie.Value
End With




"guy boily" a écrit dans le message de news:

Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.



--
boily_SLSJ
Avatar
guy boily
Bonjour,

Merci à JB et À Michdeni...j'essaie tout ça et vous reviens

Mille merci'S à vous deux
--
boily_SLSJ



Pour ton information, la ligne de commande
On Error Resume Next est présente seulement
pour éviter la procédure de se planter si la feuille
contenant les colonnes "B:H" sont complètement vides.
La méthode Find génère une erreur de type 91 lorsqu'elle
ne trouve pas ce qu'elle cherche.

Sinon, elle n'a pas sa raison d'être.


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

Dim DerLig As Long

With Worksheets("NomDeTaFeuille")
On Error Resume Next
DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

.Range("b" & DerLig).Value = Me.txtnom.Text
.Range("c" & DerLig).Value = Me.Txtcp12.Text
.Range("d" & DerLig).Value = Me.Txtdepistage.Text
.Range("e" & DerLig).Value = Me.txtreference.Text
.Range("f" & DerLig).Value = Me.txtchic.Value
.Range("g" & DerLig).Value = Me.txtjonq.Value
.Range("h" & DerLig).Value = Me.txtbaie.Value
End With




"guy boily" a écrit dans le message de news:

Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.



--
boily_SLSJ






Avatar
guy boily
Bonjour JB

Ça marche au poil ! extra

merci
--
boily_SLSJ



Bonjour,


[B65000].End(xlUp).Offset(1, 0) = Me.txtnom.Text
[B65000].End(xlUp).Offset(0, 4) = Me.TextChic


JB
http://boisgontierjacques.free.fr

On 26 sep, 18:22, guy boily
wrote:
Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.

--
boily_SLSJ







Avatar
guy boily
Bonjour Mich,,

La solution à JB me convient parfaitement dans mon projet actuel.
Je garde toutefois ton code au cas où.......

Merci boucoup pour votre aide ultra rapide
--
boily_SLSJ



Dim DerLig As Long

With Worksheets("NomDeTaFeuille")
On Error Resume Next
DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

.Range("b" & DerLig).Value = Me.txtnom.Text
.Range("c" & DerLig).Value = Me.Txtcp12.Text
.Range("d" & DerLig).Value = Me.Txtdepistage.Text
.Range("e" & DerLig).Value = Me.txtreference.Text
.Range("f" & DerLig).Value = Me.txtchic.Value
.Range("g" & DerLig).Value = Me.txtjonq.Value
.Range("h" & DerLig).Value = Me.txtbaie.Value
End With




"guy boily" a écrit dans le message de news:

Bonjour à tous(tes)

J'ai un userform pour la saisie de mes donnée. j'ai un bouton "validation"
qui enregistre mes données à la suite des données déjà saisies avec cette
commande:
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.txtnom.Text
Range("c65536").End(xlUp).Offset(1, 0).Value = Me.Txtcp12.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txtdepistage.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.txtreference.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.txtchic.Value
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.txtjonq.Value
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.txtbaie.Value
À la saisie, mon txtbox "Me.txtchic.value" peut rester vide. Alors, dès que
je valide un autre enregistrement et que mon précédent "txtchic" était
rester vide, la valeur "txtchic" va s'inscrire sur la ligne précédente.

Ma question : Comment faire pour que "txtchic" s'inscrive sur la même ligne
que "txtnom" ; puisque toutes les autres textbox doivent contenir des
données lors de la saisie.

Merci à l'avance pour vos réponses.



--
boily_SLSJ





Avatar
MichDenis
| La solution à JB me convient parfaitement dans mon projet actuel.
| Je garde toutefois ton code au cas où.......

Pas de problème, à toi les oreilles, fais à ta tête !

Même avec beaucoup de bonne volonté, je n'arrive pas à comprendre
pourquoi tu tiens à répéter 7 fois l'usage de
ces 2 méthodes jumelées ."End(xlUp) et Offset(1, 0)" dans ta procédure
pour trouver la ligne où tu devrais inscrire tes données au lieu
d'utiliser ceci qui fait la même chose en une opération :

DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

J'en appelle à JPS .... lorsque ce dernier veut un panier de pommes
est-ce qu'il rapporte de l'épicerie le panier au complet en un seul voyage
où s'il fait autant de voyage qu'il y a de pommes dans le panier, se contentant
de ramener une pomme à la fois ...!

;-)))
Avatar
guy boily
Bonjour MichDenis,

Excuse -moi pour la réponse tardive.je ne suis plus au bureau actuellement.
La réponse est simple, j'ai récupérer cette façon de faire sur le site de
XLWIKI et l'ai adapter à mes besoins sans savoir(quoique je m'en doutais
bien) qu'il existait d'autres façons de faire plus rapides. Je dois dire
également que je suis débutant dans l'utilisation d'excel avec du code et des
'userform'. Jusqu'à maintenant j'ai surtout utilisé du code pour développer
des bases de données 'ACCESS' avec l'aide du Forum access, bien sur.

Demain je vais remplacer la solution ' JB ' par ton code. j'ai bien hâte de
voir....

Merci encore de te préoccuper de mon problème.

Sachant tout cela, ne soit pas trop dure avec JB il m'a vraiment aidé avec
sa solution.





--
boily_SLSJ



| La solution à JB me convient parfaitement dans mon projet actuel.
| Je garde toutefois ton code au cas où.......

Pas de problème, à toi les oreilles, fais à ta tête !

Même avec beaucoup de bonne volonté, je n'arrive pas à comprendre
pourquoi tu tiens à répéter 7 fois l'usage de
ces 2 méthodes jumelées ."End(xlUp) et Offset(1, 0)" dans ta procédure
pour trouver la ligne où tu devrais inscrire tes données au lieu
d'utiliser ceci qui fait la même chose en une opération :

DerLig = .Range("B:H").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1

J'en appelle à JPS .... lorsque ce dernier veut un panier de pommes
est-ce qu'il rapporte de l'épicerie le panier au complet en un seul voyage
où s'il fait autant de voyage qu'il y a de pommes dans le panier, se contentant
de ramener une pomme à la fois ...!

;-)))





Avatar
MichDenis
Bonsoir Guy,

| Demain je vais remplacer la solution ' JB ' par ton code. j'ai bien hâte de voir....

Ce n'était pas le but de ma remarque !

Pour moi, le forum est un lieu de partage et surtout d'apprentissage. Pour ce
faire, comme Excel regorge de plusieurs façons de solutionner une même
problématique, la discussion (propositions d'alternatives) permet d'explorer
davantage les possibilités du logiciel et de raffiner son approche quant à la
manière de coder.

Faut pas se fier au apparence, il n'y a pas de compétition. Personne ne se
mettra riche à intervenir ici si ce n'est quelques élus ;-))

Dans ta question initiale, tu disais rencontrer un problème avec un item de ta liste
si ce dernier n'a pas été renseigné adéquatement lors de l'enregistrement précédent...

Ce que je t'ai proposé te donnera toujours la ligne où tu devras inscrire tes données
qu'il y ait 1 , 2 ou 4 items manquants. Même s'il n'y avait seulement qu'un champ de
compléter (peu importe lequel) l'enregistrement se fera toujours sur la bonne ligne.

Comme déjà énoncé lors du message précédent, pourquoi répéter 7 fois la
même opération si une opération est suffisante ..L'usage d'une variable qui
stocke la valeur voulue est plus appropriée me semble-t-il..Sur des procédures
de quelques lignes, peu importe la méthode utilisée, il n'y aura pas une différence
significative du temps d'exécution .... Tout ceci se situe plutôt au niveau des
principes de codage .... et là tout le monde est libre de choisir ce qui lui convient.

Depuis un bon moment, la tendance sur ce groupe de discussion s'est orientée
davantage vers l'offrande d'une solution (clé en main_ au demandeur qu'à la
discussion elle-même...des problématiques...Et c'est bien dommage...J'ai de plus
en plus le sentiment d'être le bénévole de Microsoft en répondant à un demandeur ...
qu'un usager du forum avide d'apprendre.


Salutations.
Avatar
Francois L
(...)

J'en appelle à JPS .... lorsque ce dernier veut un panier de pommes
est-ce qu'il rapporte de l'épicerie le panier au complet en un seul voyage
où s'il fait autant de voyage qu'il y a de pommes dans le panier, se contentant
de ramener une pomme à la fois ...!

;-)))


Bonjour Denis,

JPS, je ne sais pas... mais moi par exemple, s'il y a une cave à coté de
l'épicerie, peut-être que je choisirais la deuxième solution.

:o)

--
François L

1 2 3