userform

P

PHOENIX

Guest
Bien le bonsoir a tous.

Petite question SVP

J'ai crée un userform qui me sert de masque de saisie.
Les valeurs inscrite dans les textbox sont recopier sur une ligne dans une feuille 1 par exemple.
aujoudh'ui je ne sais pas faire autrement que d'inserer une ligne dans cette feuille 1 pour copier la seconde série de données de mes textbox.
Demain je souhaiterais pouvoir copier dans le bon ordre cad ligne1 avec données1, ligne 2 avec données 2 etc...

Si une ame charitable avait la solution et voudrais bien la partagée, je lui en serais trés reconnaissant.

Merci d'avance

Phoenix
 
D

Dan

Guest
Bonsoir,

Dans ta macro, tu peux placer cette instruction au moment où tu confirmes que les données placées dans les Texbox sont bonnes; par un bouton de validation par exemple.

'Déclaration de variable "L" pour connaitre la Ligne Numéro
Dim L As Integer

'recupération de la dernière ligne vide pour incorporer les données
L = Sheets("Listing").Range("C65536").End(xlUp).Row + 1


Bon travail

@+ Dan
 
R

Robert

Guest
Salut Phœnix, salut le forum,

Ces quelques lignes de code appliquées au bouton de validation de ton UserForm devraient te permettre de faire ce que tu demandes. Dans cet exemple deux TextBox uniquement, les données commencent en A1 . À toi de l'adapter à ton propre UserForm.

Private Sub CommandButton1_Click()
If Range("A1").Value = "" Then
Range("A1").Value = TextBox1.Value
Range("B1").Value = TextBox2.Value
Else
Range("A" & Range("A65536").End(xlUp).Row + 1).Value = TextBox1.Value
Range("B" & Range("B65536").End(xlUp).Row + 1).Value = TextBox2.Value
End If
Unload Me
End Sub

À plus,

Robert
 
P

PHOENIX

Guest
Re salut DAn

Je viens d'essayer mes je n'y arrive pas .
Je mets mes codes actuels, peu etre pourrais tu mes les corriger avec celui que tu m'as donné précédement.

Private Sub CommandButton1_Click()
Sheets("Tableau").Select
If [b2] <> 0 Then
[x2] = Now()
End If
Do
If [b2] <> 0 Then
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Exit Do
End If
Loop
Macro11
Macro15
Unload userform1
userform1.Show
End Sub

Merci encore

;-)

Phoenix
 
@

@+Thierry

Guest
Bonjour Phoenix, Dan, Robert, le Forum

Pour ton dernier code, Phoenix, ce n'est pas le bon procédé, d'autant plus que tu appliques les [crochets] pour lesquels je ne suis pas adèpte (voir fils récents avec Yeahou).

Pour ton problème, c'est très simple tu "mixtes" les propositions de Dan et Robert comme suit, (je pars du principe que la feuille "Tableau" est un Tableau structuré et donc pas besoin du test de Robert si la ligne 1 est vide...)

Private Sub CommandButton1_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
Dim WS as WorkSheet

Set WS = Sheets("Tableau") 'Déclaration de variable "WS" pour définir l'Objet Sheet

L = WS.Range("B65536").End(xlUp).Row + 1 'si tu commences bien ton tableau en colonne "B"

'NB comme je ne sais pas combien de TextBox tu as, j'imagine 3... (à adapter)
With WS
.Range("B" & L).Value = TextBox1.Value
.Range("C" & L).Value = TextBox2.Value
.Range("D" & L).Value = TextBox3.Value
'etc etc (voir plus bas mon commentaire)
.Range("X" & L).Value = Now 'ici si tu as besoin de la Date / Heure en "X"
End With

End Sub

Voilà déjà pour une première approche... (le fait de Unloaded le UserForm pour le Reloader n'est pas très catholique non plus !!!, il vaut mieux simplement vider les controls)

Un Commentaire "Plus"...
Il est évident que si tu as 22 TextBoxes dans ton UserForm (de la colonne "B" à la colonne "W" tu ne vas pas écrire 22 fois : ".Range("?" & L)" mais dans ce cas on passe en boucle, mais pour celà trois conditions sinequanon :
1) Tes TextBox sont numérotées et nommées conventionnellement (ici "TextBox")
2) Tes TextBox sont numérotées dans l'ordre des colonnes de ton Tableau
3) Ton Tableau ne contient aucune colonne vide, mais formaté en conséquence.

Une boucle comme ceci fera l'affaire :
Dim C as Byte
For C = 2 to 22 ' (= Colonnes "B" à Coloone "W")
With WS
.Cells(L, C).Value = Controls("TextBox" & C).Value
End With

En fait tout est là.... Ceci démontre bien l'importance de travailler de manière structurée et organisée dès le départ... Ensuite VBA se ballade !!!

Bon Dimanche à tous et toutes
@+Thierry
 

Discussions similaires

Réponses
2
Affichages
318

Statistiques des forums

Discussions
312 232
Messages
2 086 462
Membres
103 222
dernier inscrit
2BS