Selectionner une boucle
Résolu
imis
-
imis -
imis -
Bonjour à vous tous,
Je suis débutant sur VBA et j'ai un petit souci de code. Voilà j’ai créé des listeBox , ComboBox,TextBox sur un UserForm pour saisir des données, ces données sont ensuite rangées dans un tableau sur une feuille Excel via un bouton de commande (bouton9). Mes lignes de code sont les suivantes :
Private Sub CommandButton9_Click()
Sheets("Feuil2").Cells(6, 1) = TextBox2
Sheets("Feuil2").Cells(6, 5) = ComboBox1
etc.(y'en a 16^^)
Donc pas de problème les informations s’inscrivent bien dans ces cellules, mais ce que je souhaite maintenant c’est quand un utilisateur lambda vient ressaisir et réactiver le bouton 9 ses données se réinscrivent sans effacer les précédentes. A force de recherche j’ai trouvé une boucle qui est la suivante:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range ("A6").Select
Do While IsEmpty(ActiveCell)= False
Selection.Offset(1,0)Select
Loop
Je l'ai mise sur la feuille en question et effectivement elle marche, mais seulement si j’écris directement sur la feuille du classeur elle même et non automatiquement après avoir cliqué sur le bouton 9.
Là ou je veux en venir (et il est temps^^), quel code me permettrait de relier les deux (bouton9-boucle) ou même à la rigueur désigner la cellule active (au lieu de .Cells(6,1) ) pour toutes mes lignes.
MERCI D'AVANCE
Je suis débutant sur VBA et j'ai un petit souci de code. Voilà j’ai créé des listeBox , ComboBox,TextBox sur un UserForm pour saisir des données, ces données sont ensuite rangées dans un tableau sur une feuille Excel via un bouton de commande (bouton9). Mes lignes de code sont les suivantes :
Private Sub CommandButton9_Click()
Sheets("Feuil2").Cells(6, 1) = TextBox2
Sheets("Feuil2").Cells(6, 5) = ComboBox1
etc.(y'en a 16^^)
Donc pas de problème les informations s’inscrivent bien dans ces cellules, mais ce que je souhaite maintenant c’est quand un utilisateur lambda vient ressaisir et réactiver le bouton 9 ses données se réinscrivent sans effacer les précédentes. A force de recherche j’ai trouvé une boucle qui est la suivante:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range ("A6").Select
Do While IsEmpty(ActiveCell)= False
Selection.Offset(1,0)Select
Loop
Je l'ai mise sur la feuille en question et effectivement elle marche, mais seulement si j’écris directement sur la feuille du classeur elle même et non automatiquement après avoir cliqué sur le bouton 9.
Là ou je veux en venir (et il est temps^^), quel code me permettrait de relier les deux (bouton9-boucle) ou même à la rigueur désigner la cellule active (au lieu de .Cells(6,1) ) pour toutes mes lignes.
MERCI D'AVANCE
A voir également:
- Selectionner une boucle
- Selectionner texte sur pdf - Guide
- Comment sélectionner un message sur whatsapp pour y répondre - Guide
- Comment selectionner toutes les photos dans google photo - Guide
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Sélectionnez une extension correspondant à un fichier de présentation (diaporama). ✓ - Forum Powerpoint
8 réponses
bonjour,
pour trouver la dernière ligne utilisée d'une colonne +1 (+1:donc, la vide)
dim lig as long
lig=range("A65536").end(xlup).row +1
Sheets("Feuil2").Cells(lig, 1) = TextBox2
pour trouver la dernière ligne utilisée d'une colonne +1 (+1:donc, la vide)
dim lig as long
lig=range("A65536").end(xlup).row +1
Sheets("Feuil2").Cells(lig, 1) = TextBox2
Bonjour,
Bah me revoilà, j'ai effectué la dermache suivante:
Private Sub CommandButton9_Click()
dim lig as long
lig = Range("A65536").End(xlUp).Row + 1
Sheets("Feuil2").Cells(lig, 1) = TextBox2
Sheets("Feuil2").Cells(lig, 2) = TextBox1
Sheets("Feuil2").Cells(lig, 3) = TextBox3
Sheets("Feuil2").Cells(lig, 4) = TextBox4
Sheets("Feuil2").Cells(lig, 5) = ComboBox1
Sheets("Feuil2").Cells(lig, 6) = ComboBox2
Sheets("Feuil2").Cells(lig, 7) = ComboBox3
Sheets("Feuil2").Cells(lig, 8) = ComboBox4
Sheets("Feuil2").Cells(lig, 9) = TextBox5
Sheets("Feuil2").Cells(lig, 10) = TextBox6
Sheets("Feuil2").Cells(lig, 11) = TextBox7
Sheets("Feuil2").Cells(lig, 12) = TextBox8
Sheets("Feuil2").Cells(lig, 13).NumberFormat = TextBox9
Sheets("Feuil2").Cells(lig, 13).NumberFormat = "# ###0,00€"
Sheets("Feuil2").Cells(lig, 14) = TextBox10
Sheets("Feuil2").Cells(lig, 15) = TextBox11
Sheets("Feuil2").Cells(lig, 16) = ComboBox7
Sheets("Feuil2").Cells(lig, 18) = ComboBox6
End Sub
et maintenant rien ne s'inscrit dans mon tableau :( , je suis vraiment débutant donc dsl d'être aussi nul j'essaye d'assimiler les codes ^^ mais j'ai du mal (la preuve)
Bah me revoilà, j'ai effectué la dermache suivante:
Private Sub CommandButton9_Click()
dim lig as long
lig = Range("A65536").End(xlUp).Row + 1
Sheets("Feuil2").Cells(lig, 1) = TextBox2
Sheets("Feuil2").Cells(lig, 2) = TextBox1
Sheets("Feuil2").Cells(lig, 3) = TextBox3
Sheets("Feuil2").Cells(lig, 4) = TextBox4
Sheets("Feuil2").Cells(lig, 5) = ComboBox1
Sheets("Feuil2").Cells(lig, 6) = ComboBox2
Sheets("Feuil2").Cells(lig, 7) = ComboBox3
Sheets("Feuil2").Cells(lig, 8) = ComboBox4
Sheets("Feuil2").Cells(lig, 9) = TextBox5
Sheets("Feuil2").Cells(lig, 10) = TextBox6
Sheets("Feuil2").Cells(lig, 11) = TextBox7
Sheets("Feuil2").Cells(lig, 12) = TextBox8
Sheets("Feuil2").Cells(lig, 13).NumberFormat = TextBox9
Sheets("Feuil2").Cells(lig, 13).NumberFormat = "# ###0,00€"
Sheets("Feuil2").Cells(lig, 14) = TextBox10
Sheets("Feuil2").Cells(lig, 15) = TextBox11
Sheets("Feuil2").Cells(lig, 16) = ComboBox7
Sheets("Feuil2").Cells(lig, 18) = ComboBox6
End Sub
et maintenant rien ne s'inscrit dans mon tableau :( , je suis vraiment débutant donc dsl d'être aussi nul j'essaye d'assimiler les codes ^^ mais j'ai du mal (la preuve)
Curieux, je viens de vérifier
XL<2007
lig = Range("A65536").End(xlUp).Row + 1
fonctionne
sélectionne lig et demande un espion (débogage-ajouter un espion)
la m^chose pour textbox2
mets un point d'arret au niveau de lig (clique dans le bandeau vertical à gauche)
lance ton usf mets des valeurs et appuie sur ton bouton
la macro s'arr^te sur sur ... la ligne du point d'arrêt
continue en pas à pas (F8)
et regarde la valeur de lig puis de textbox2
autre chose pour allèger ton code:
With Sheets("Feuil2")
.Cells(lig, 1) = TextBox2
.Cells(lig, 2) = TextBox1
....
End With
tu me tiens au courant...
XL<2007
lig = Range("A65536").End(xlUp).Row + 1
fonctionne
sélectionne lig et demande un espion (débogage-ajouter un espion)
la m^chose pour textbox2
mets un point d'arret au niveau de lig (clique dans le bandeau vertical à gauche)
lance ton usf mets des valeurs et appuie sur ton bouton
la macro s'arr^te sur sur ... la ligne du point d'arrêt
continue en pas à pas (F8)
et regarde la valeur de lig puis de textbox2
autre chose pour allèger ton code:
With Sheets("Feuil2")
.Cells(lig, 1) = TextBox2
.Cells(lig, 2) = TextBox1
....
End With
tu me tiens au courant...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Excuses, j'avais pas rafraichi...
Pas d'excuses celui qui ne réfléchi pas ici c'est moi ^^, bon alors non seulement en plus d'être un boulet je pollue le forum car je n'avais pas fait attention mais vous m'avez répondu ^^. Donc DSL.
Alors votre code marche absolument, le seul problème c'est qu'il m'inscrit mes données dans l'intitulé de mon tableu et non dans les case adéquates. Pour faire simple la première ligne à remplie comme à la cellule A6 les précédentes étant reservées aux intitulés.
J'ai effectué la dermarche avec les espions et tout concorde pour les lignes. SAUF le fait qu'il commence à la ligne A2 au lieu de A6.
Merci pour le conseil de racourcir mon code c'est bien plus clair ^^.
Alors votre code marche absolument, le seul problème c'est qu'il m'inscrit mes données dans l'intitulé de mon tableu et non dans les case adéquates. Pour faire simple la première ligne à remplie comme à la cellule A6 les précédentes étant reservées aux intitulés.
J'ai effectué la dermarche avec les espions et tout concorde pour les lignes. SAUF le fait qu'il commence à la ligne A2 au lieu de A6.
Merci pour le conseil de racourcir mon code c'est bien plus clair ^^.
Bonjour,
J’ai crié trop hâtivement victoire car ce code en veux qu’à mes intitulés ^^ , et ça malgré toutes mes tentatives. Mon tableau commence à la cellule A6 et pourtant il me rempli dès la cellule A2 à savoir en plein titre de mon tableau.
Je vous saurais gré de bien vouloir m’aider car je suis vraiment perdu et le pire c’est que je sais que le code de michel_m marche puisqu’il est posté sur plusieurs codes dans le forum et de surcroit marche sur mon tableau.
Ma question est donc la suivante:
-comment lui (code) dire de commencer à la cellule A6 et ensuite qu’il enchaîne sur le code de michel_m afin qu'il puisse remplir à chaque fois les champs vides.
Merci d’avance
J’ai crié trop hâtivement victoire car ce code en veux qu’à mes intitulés ^^ , et ça malgré toutes mes tentatives. Mon tableau commence à la cellule A6 et pourtant il me rempli dès la cellule A2 à savoir en plein titre de mon tableau.
Je vous saurais gré de bien vouloir m’aider car je suis vraiment perdu et le pire c’est que je sais que le code de michel_m marche puisqu’il est posté sur plusieurs codes dans le forum et de surcroit marche sur mon tableau.
Ma question est donc la suivante:
-comment lui (code) dire de commencer à la cellule A6 et ensuite qu’il enchaîne sur le code de michel_m afin qu'il puisse remplir à chaque fois les champs vides.
Merci d’avance
lig = Range("A65536").End(xlUp).Row
if lig<6 then
lig=6
else
lig=lig+1
end if
en saisissant un espace ou un point ou... en A5, tu pourrais garder
lig = Range("A65536").End(xlUp).Row + 1
sans le test
a toi de voir ( le test est + prudent car à l'abri d'une saisie malencontreuse en A6)
if lig<6 then
lig=6
else
lig=lig+1
end if
en saisissant un espace ou un point ou... en A5, tu pourrais garder
lig = Range("A65536").End(xlUp).Row + 1
sans le test
a toi de voir ( le test est + prudent car à l'abri d'une saisie malencontreuse en A6)
Bon alors là chouette les informations sont bien inscrites dans les bonnes cases, mais le point négatif malgré toute cette précieuse aide, c'est que je retourne à mon 1er problème à savoir qu'il m'efface la ligne qui vient juste d'être écrite si je réitère l'opération. voilà mon code pour voir où ça coince et vraiment merci:
Private Sub CommandButton9_Click()
Dim lig As Long
lig = Range("A65536").End(xlUp).Row
If lig < 6 Then
lig = 6
Else
lig = lig + 1
End If
With Sheets("Feuil2")
.Cells(lig, 1) = TextBox2
.Cells(lig, 2) = TextBox1
.Cells(lig, 3) = TextBox3
.Cells(lig, 4) = TextBox4
.Cells(lig, 5) = ComboBox1
.Cells(lig, 6) = ComboBox2
.Cells(lig, 7) = ComboBox3
.Cells(lig, 8) = ComboBox4
.Cells(lig, 9) = TextBox5
.Cells(lig, 10) = TextBox6
.Cells(lig, 11) = TextBox7
.Cells(lig, 12) = TextBox8
.Cells(lig, 13).NumberFormat = TextBox9
.Cells(lig, 13).NumberFormat = "# ###0,00€"
.Cells(lig, 14) = TextBox10
.Cells(lig, 15) = TextBox11
.Cells(lig, 16) = ComboBox7
.Cells(lig, 18) = ComboBox6
End With
Unload UserForm2
Unload UserForm3
Unload UserForm1
End Sub
Private Sub CommandButton9_Click()
Dim lig As Long
lig = Range("A65536").End(xlUp).Row
If lig < 6 Then
lig = 6
Else
lig = lig + 1
End If
With Sheets("Feuil2")
.Cells(lig, 1) = TextBox2
.Cells(lig, 2) = TextBox1
.Cells(lig, 3) = TextBox3
.Cells(lig, 4) = TextBox4
.Cells(lig, 5) = ComboBox1
.Cells(lig, 6) = ComboBox2
.Cells(lig, 7) = ComboBox3
.Cells(lig, 8) = ComboBox4
.Cells(lig, 9) = TextBox5
.Cells(lig, 10) = TextBox6
.Cells(lig, 11) = TextBox7
.Cells(lig, 12) = TextBox8
.Cells(lig, 13).NumberFormat = TextBox9
.Cells(lig, 13).NumberFormat = "# ###0,00€"
.Cells(lig, 14) = TextBox10
.Cells(lig, 15) = TextBox11
.Cells(lig, 16) = ComboBox7
.Cells(lig, 18) = ComboBox6
End With
Unload UserForm2
Unload UserForm3
Unload UserForm1
End Sub
je viens d'essayer cette macro test et ca marche
Sub fff()
Dim lig As Long
lig = Range("A65536").End(xlUp).Row
If lig < 6 Then
lig = 6
Else
lig = lig + 1
End If
With Sheets(1)
.Cells(lig, 1) = "toto"
End With
End Sub
Sub fff()
Dim lig As Long
lig = Range("A65536").End(xlUp).Row
If lig < 6 Then
lig = 6
Else
lig = lig + 1
End If
With Sheets(1)
.Cells(lig, 1) = "toto"
End With
End Sub
Roohh c'est dingue bah chez moi pas d'amélioration il m'efface toujours la ligne précedente mais la je réfléchis à partir de la ligne 5 :
1)Private Sub CommandButton9_Click()
2)Dim lig As Long
3)lig = Range("A65536").End(xlUp).Row
4)If lig < 6 Then
5)lig = 6
6)Else
7)lig = lig + 1
8)End If
SI j'ai bien compris le principe si lors de sa boucle il trouve une case vide plus petite que A6 il se met automatiquement à la ligne 6. ensuite il met la valeurs dans lig+1.
Je supose quelque chose: pour lui il le mettra tjrs à lig6+1 soit la ligne 7 donc il le mettra tjrs sur la même ligne (dis moi si mon raisonnement n'a aucun sens) d'où l'effacement perpetuelle.
donc je suis en train de travailler sur le code et je te tiens au courant
1)Private Sub CommandButton9_Click()
2)Dim lig As Long
3)lig = Range("A65536").End(xlUp).Row
4)If lig < 6 Then
5)lig = 6
6)Else
7)lig = lig + 1
8)End If
SI j'ai bien compris le principe si lors de sa boucle il trouve une case vide plus petite que A6 il se met automatiquement à la ligne 6. ensuite il met la valeurs dans lig+1.
Je supose quelque chose: pour lui il le mettra tjrs à lig6+1 soit la ligne 7 donc il le mettra tjrs sur la même ligne (dis moi si mon raisonnement n'a aucun sens) d'où l'effacement perpetuelle.
donc je suis en train de travailler sur le code et je te tiens au courant
j'ai identifier mon problème, au départ je croyais que dès que je rajoutais un chiffre le code ne marchais pas. Le problème est que tant que l'on utilise des TextBox y'a pas de problème mais dès que l'on utilise un Combobox les données sont obligatoirement placées sur la première ligne.
Je sais identifier le problème mais pas le régler ^^ donc je demande de l'aide SVP mais là ça deviens un autre problème alors je vais peut être me permettre de lancer un autre question.
Merçi pour ton aide précieuse michel_m elle m'a aidée et une fois que j'aurais résolu ma dernière question grâce à toi j'aurai terminé mon programme.
Je sais identifier le problème mais pas le régler ^^ donc je demande de l'aide SVP mais là ça deviens un autre problème alors je vais peut être me permettre de lancer un autre question.
Merçi pour ton aide précieuse michel_m elle m'a aidée et une fois que j'aurais résolu ma dernière question grâce à toi j'aurai terminé mon programme.