Déplacer les informations UserForm à Cellule
Bonjour Bonjour ! J'aimerais une fois de plus faire usage de vos connaissences !
J'ai demandé récement des astuces pour mon fichier xls la semaine passé (ici), CousinHub m'à beaucoup aidé sur ce coup ! Merci encore !
Cette fois ci j'aimerais que l'on m'explique comment faire pour prendre une donnée d'un TextBox et l'inserer dans une cellule.
Exemple:
Jai un TextBox que l'on appellera "TbxName" et qui sera fait pour y inserer le nom de famille. TbxName sera relié à la cellule de l'onglet "Description" dans la colonne "name" a la suite des autes données. Cette manoeuvre est l'explication dont j'ai besoin pour continuer mon fichier.
SO PLEASE EXCEL-PRATIQUE, PIMP MY XLS FILE !
Bonjour,
Dans le code du Bouton de Commande, il te faut d'abord déterminer la première cellule vide de ton onglet
Pour ce faire, plusieurs moyens, dont celui-ci :
Dim DerCel As Range
With Sheets("Description")
Set DerCel = .Range("A65000").End(xlUp)(2)
DerCel.Value = Me.TbxName
'si tu veux rajouter sur la même ligne, tu peux utiliser
'la variable DerCel.Row qui te donne la première ligne vide
'ou le décalage DerCel.Offset(NbLignes, NCcolonnes)
End WithEdit, Range("A65000") si la colonne des noms est bien en colonne A, à adapter...
Edit2 : code modifié pour rajouter un point (.) devant Range
Bon courage
Dim DerCel As Range
With Sheets("Description")
Set DerCel = Range("A65000").End(xlUp)(2)
DerCel.Value = Me.TbxName
'si tu veux rajouter sur la même ligne, tu peux utiliser
'la variable DerCel.Row qui te donne la première ligne vide
'ou le décalage DerCel.Offset(NbLignes, NCcolonnes)
End WithxlUp: Ceci sert a quoi ?
En somme il faut que je Créer une valeur (DerCel) pour chaque txtbox ?
sinon pour le reste je vais tout de suite essayer !
Re-,
Range("A65000").End(xlup) correspond à une remontée de la dernière cellule de la colonne A (j'aurais du mettre A65536), vers le haut, afin d'atterrir sur la dernière cellule remplie (comme si tu faisais un double clic sur le haut de la cellule A65536)
Le (2), juste derrière, te permet de décaler d'une ligne vers le bas, afin d'obtenir la première cellule vide, en partant du bas...
Admettons que tu aies un autre textbox, nommé TbxSurName (comme prénom.....)
Tu peux rentrer cette valeur comme ceci :
Dim DerCel As Range
With Sheets("Description")
Set DerCel = .Range("A65000").End(xlUp)(2)
DerCel.Value = Me.TbxName
DerCel.Offset(0, 1).Value = Me.TbxSurName
' ou comme ceci :
.Cells(DerCel.Row, 2).Value = Me.TbxSurName
' le 2 pour dire que c'est dans la 2ème colonne
End WithAttention, dans le code précédent, j'ai oublié de mettre un point (.) devant Range("A65000"), afin de dire à Excel que c'est bien sur l'onglet ("Description") qu'on cherche cette cellule (With Sheets("Description").
Bon courage
Ok, pour l'instant je comprends, mais mon fichier ne fonctionne pas...
j'ai créé un essai rapide pour voir si tout ce passe bien mais pas possible, quelque chose bloque.
Private Sub BtnSave_Click()
Dim DerCel As Range
With Sheets("Movements")
Set DerCel = .Range("A65536").End(X1Up)(2)
Cells(DerCel, 2).Value = Me.TbxName
Cells(DerCel, 3).Value = Me.TbxCAS
Cells(DerCel, 4).Value = Me.TbxBC
Cells(DerCel, 5).Value = Me.TbxSupplier
Cells(DerCel, 6).Value = Me.TbxNSpupplier
Cells(DerCel, 7).Value = Me.TbxStoPlace
Cells(DerCel, 8).Value = Me.TbxStock
Cells(DerCel, 9).Value = Me.TbxURL
End SubJe sais pas qu'est ce que je fais de mal mais ca ne marche pas.
Comment avais tu fais pour les modification CousinHub ? peut-tu m'expliquer par mp ?
Re-,
peut-tu m'expliquer par mp ?
le but d'un forum est de faire profiter tout le monde...
Je ne réponds pas aux MP non sollicités...
Que se passe-t-il lorsque tu déroules le code?
As-tu un message d'erreur
Sinon, comme je l'ai dit plus haut, pour te référencer à l'onglet "Movements", il faut rajouter un point (.) devant Range, mais aussi devant Cells...
Et cloturer ton bloc "With", par un "End With"...
comme ceci :
With Sheets("Movements")
Set DerCel = .Range("A65536").End(X1Up)(2)
.Cells(DerCel, 2).Value = Me.TbxName
.Cells(DerCel, 3).Value = Me.TbxCAS
.Cells(DerCel, 4).Value = Me.TbxBC
.Cells(DerCel, 5).Value = Me.TbxSupplier
.Cells(DerCel, 6).Value = Me.TbxNSpupplier
.Cells(DerCel, 7).Value = Me.TbxStoPlace
.Cells(DerCel, 8).Value = Me.TbxStock
.Cells(DerCel, 9).Value = Me.TbxURL
End With
End SubEdit, je viens de voir que tu as mis (X1Up), avec un "1"
C'est un l (L minuscule) (XlUp)
j'ai essayé avec le End with mais toujours la meme chose, peut-etre que j'ai fais une erreur ailleurs...
Pour l'information sur le code c'est parce que le topic n'a pas été fait pour ca alors je ne sais pas si il faut que j'ouvre un autre topic pour te poser la question avec les expliquations d'aupart avant ou si je pouvais te le demander plus rapidement.
Re-,
je ne sais pas pourquoi j'écris tout ça.......
Sinon, comme je l'ai dit plus haut, pour te référencer à l'onglet "Movements", il faut rajouter un point (.) devant Range, mais aussi devant Cells...
ainsi que ceci :
Edit, je viens de voir que tu as mis (X1Up), avec un "1"
C'est un l (L minuscule) (XlUp)
C'est bien, de lire en diagonale, mais faut tout prendre, quand même.....
C'est bon ! là j'y arrive !
Ca donne ça:
With Sheets("Movements")
Set DerCel = .Range("B65536").End(xlUp)(2)
.Cells(DerCel.Row, 2).Value = Date
.Cells(DerCel.Row, 3).Value = Time
.Cells(DerCel.Row, 4).Value = Me.TbxName
.Cells(DerCel.Row, 5).Value = Me.TbxCAS
.Cells(DerCel.Row, 6).Value = Me.TbxSupplier
.Cells(DerCel.Row, 7).Value = Me.TbxNSpupplier
.Cells(DerCel.Row, 8).Value = Me.TbxStock
.Cells(DerCel.Row, 9).Value = Me.TbxBC
.Cells(DerCel.Row, 10).Value = Me.TbxStoPlace
.Cells(DerCel.Row, 11).Value = Me.TbxURL
'Personal informations (Juste when a product moves to a customer)
.Cells(DerCel.Row, 13).Value = Me.TbxTName
.Cells(DerCel.Row, 14).Value = Me.TbxWBS
.Cells(DerCel.Row, 15).Value = Me.TbxGL
.Cells(DerCel.Row, 16).Value = Me.TbxCC
.Cells(DerCel.Row, 17).Value = Me.TbxNewStoPlace
End Withun peu long et j'ai pas encore finis. Mais merci encore une fois CousinHub !