Remplir 2 tableaux à partir d'un formulaire userform
Bonjour à tous,
Débutant.
J'ai créé un formulaire à partir d'un userform qui se décompose en deux séries de questions. Une fois les informations rentrées, je souhaiterais qu'une partie aille dans un tableau sur un premier onglet, et que le reste aille sur un tableau d'un second onglet.
J'ai pour cela tenté la commande suivante :
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’ajout de cette FM ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
With Worksheets("Synthèse")
L = Sheets("Synthèse").Range("C65536").End(xlUp).Row + 1
Range("C" & L).Value = TextNum
Range("D" & L).Value = TextInd
Range("F" & L).Value = TextStatut
Range("G" & L).Value = TextDate
Range("H" & L).Value = TextNom
Range("G" & L).Value = TextDate
Range("F" & L).Value = ComboBox1
Range("J" & L).Value = TextING
Range("K" & L).Value = TextR_A
Range("L" & L).Value = TextRATP
Range("M" & L).Value = TextMont
Range("O" & L).Value = TextCom
End With
With Worksheets("Suivi_financier")
M = Sheets("Suivi_financier").Range("B65536").End(xlUp).Row + 1
Range("B" & M).Value = TextNum
Range("C" & M).Value = TestPost1
Range("E" & M).Value = TestPost11
End With
End If
End Sub
La première partie se renseigne très bien dans mon tableau. En revanche il ne se produit rien sur le 2e onglet où le tableau reste complètement vierge.
Je pense que je ne m'y prends pas de la bonne façon. Pourriez-vous m'indiquer quelle manip je pourrais utiliser pour alimenter mon second tableau.
Merci d'avance.
Cordialement,
Benjamin
Bonjour,
Le premier With ne sert à rien car tu es sur la feuille active c'est donc elle qui reçoit les informations.
Quand au deuxième With, si tu veux qu'il serve à quelque chose il ne faut pas oublier les "." avant Range...
(Si tu omets les "." C'est la Feuille active qui reçoit les données.)
Le code corrigé :
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l’ajout de cette FM ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
L = Range("C65536").End(xlUp).Row + 1
Range("C" & L).Value = TextNum
Range("D" & L).Value = TextInd
Range("F" & L).Value = TextStatut
Range("G" & L).Value = TextDate
Range("H" & L).Value = TextNom
Range("G" & L).Value = TextDate
Range("F" & L).Value = ComboBox1
Range("J" & L).Value = TextING
Range("K" & L).Value = TextR_A
Range("L" & L).Value = TextRATP
Range("M" & L).Value = TextMont
Range("O" & L).Value = TextCom
With Worksheets("Suivi_financier")
M = .Range("B65536").End(xlUp).Row + 1
.Range("B" & M).Value = TextNum
.Range("C" & M).Value = TestPost1
.Range("E" & M).Value = TestPost11
End With
End If
End Sub
Je dépose mon document pour plus de clarté.
galopin01 a écrit :Bonjour,
Le premier With ne sert à rien car tu es sur la feuille active c'est donc elle qui reçoit les informations.
Quand au deuxième With, si tu veux qu'il serve à quelque chose il ne faut pas oublier les "." avant Range...
(Si tu omets les "." C'est la Feuille active qui reçoit les données.)
Le code corrigé :
Private Sub CommandButton3_Click() Dim L As Integer If MsgBox("Confirmez-vous l’ajout de cette FM ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then L = Range("C65536").End(xlUp).Row + 1 Range("C" & L).Value = TextNum Range("D" & L).Value = TextInd Range("F" & L).Value = TextStatut Range("G" & L).Value = TextDate Range("H" & L).Value = TextNom Range("G" & L).Value = TextDate Range("F" & L).Value = ComboBox1 Range("J" & L).Value = TextING Range("K" & L).Value = TextR_A Range("L" & L).Value = TextRATP Range("M" & L).Value = TextMont Range("O" & L).Value = TextCom With Worksheets("Suivi_financier") M = .Range("B65536").End(xlUp).Row + 1 .Range("B" & M).Value = TextNum .Range("C" & M).Value = TestPost1 .Range("E" & M).Value = TestPost11 End With End If End Sub
Bonjour,
Merci de ces précisions et du code.
En revanche, il ne s'affiche toujours rien dans le tableau du 2e onglet.
Une idée?
Bonjour,
Ce sont les cellules fusionnées qui mettent le b...
Défusionne la cellule B1 et tu verras que le N° s'inscrit bien
En revanche aucun des autres contrôles Textbox n'existe :
Tu les as nommés
TextPoste1
TextPoste2
et ainsi de suite...
Or dans le code
tu écris :
.Range("C" & M).Value = TestPost1 (sans e)
Dans ces conditions ça ne peut guère marcher.
Conseils :
1- Supprimer les cellules fusionnées.
2 - Ne pas utiliser les frames comme des éléments de décoration.
3 - Quand on a un grand nombre de Textbox, éviter de les renommer et les créer dans l'ordre des colonnes : Quand on est astucieux ça permet de remplacer 50 lignes de code par 3 seulement :
For i = 1 To 50
Cells(i, 1) = Me.Controls("TextBox" & i)
Next i
A+
galopin01 a écrit :Bonjour,
Ce sont les cellules fusionnées qui mettent le b...
Défusionne la cellule B1 et tu verras que le N° s'inscrit bien
En revanche aucun des autres contrôles Textbox n'existe :
Tu les as nommés
TextPoste1
TextPoste2
et ainsi de suite...
Or dans le code
tu écris :
.Range("C" & M).Value = TestPost1 (sans e)
Dans ces conditions ça ne peut guère marcher.
Conseils :
1- Supprimer les cellules fusionnées.
2 - Ne pas utiliser les frames comme des éléments de décoration.
3 - Quand on a un grand nombre de Textbox, éviter de les renommer et les créer dans l'ordre des colonnes : Quand on est astucieux ça permet de remplacer 50 lignes de code par 3 seulement :
For i = 1 To 50 Cells(i, 1) = Me.Controls("TextBox" & i) Next i
A+
Certes. C'est mieux comme ça.
Merci de ton aide!