Formulaire et alimentation multi feuilles
Bonjour
Une petite question j'ai créée un formulaire USERFORM avec différentes TEXTBOX qui me renvoie les valeurs sur une feuille base de donnée, ma question est :
Est il possible que je puisse affecter également les données des TEXTBOX à une autre feuille nomée DDE DEVIS dans le même classeur, dans des cellules bien définies (voir exemple plus bas), attention les valeurs les TEXTBOX dans qui se retrouveront dans la feuille DDE DEVIS n'ont pas vocation à rester puisqu'elle doivent changer a chaque fois que les valeurs de mes TEXTBOX changeront. En quelque sorte sa pourrait donner cela exemple : txtNom est égal à la ligne correspondante dans ma feuille BASE DE DONNEE (jusqu'a que jele décide), mais correspond également à la cellule C23 de la feuille DDE DEVIS (mais uniquement de manière temporaire, si une nouvelle valeur est entrée dans txtNom alors cela, devra correspondre à la valeur que je devrais retrouver dans la feuille DDE DEVIS :
Private Sub cmdAjouter_Click()
Dim numLigneVide As Integer
Worksheets("BASE DE DONNEE").Activate
numLigneVide = ActiveSheet.Columns(1).Find("").Row
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom de votre contact", vbCritical, "Champs manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom de votre contact", vbCritical, "Champs manquant"
txtPrenom.SetFocus
Else
ActiveSheet.Cells(numLigneVide, 1) = UCase(txtNom.Text)
ActiveSheet.Cells(numLigneVide, 2) = txtPrenom.Text
ActiveSheet.Cells(numLigneVide, 3) = txtEntreprise.Text
ActiveSheet.Cells(numLigneVide, 4) = txtAdresse.Text
ActiveSheet.Cells(numLigneVide, 5) = txtCP.Text
ActiveSheet.Cells(numLigneVide, 6) = txtVille.Text
ActiveSheet.Cells(numLigneVide, 7) = txtEmail.Text
ActiveSheet.Cells(numLigneVide, 8) = txtTelFixe.Text
ActiveSheet.Cells(numLigneVide, 9) = txtTelPortable.Text
ActiveSheet.Cells(numLigneVide, 10) = txtFax.Text
ActiveSheet.Cells(numLigneVide, 11) = txtObservations.Text
txtNom.Text = ""
txtPrenom.Text = ""
txtEntreprise = ""
txtAdresse.Text = ""
txtCP.Text = ""
txtVille.Text = ""
txtEmail.Text = ""
txtTelFixe.Text = ""
txtTelPortable.Text = ""
txtFax.Text = ""
txtObservations.Text = ""
txtNom.SetFocus
End If
End Sub
Private Sub CommandButton1_Click()
Dim no_ligne As Integer
no_ligne = ComboBox1.ListIndex + 7
txtNom.Value = Cells(no_ligne, 1).Value + sheets "DDE DEVIS"! cells(no_ligne,24);columns(C) bref la cellule C24
txtPrenom.Value = Cells(no_ligne, 2).Value idem en C25
txtEntreprise.Value = Cells(no_ligne, 3).Value '' '' C23
txtAdresse.Value = Cells(no_ligne, 4).Value " " C26
txtCP.Value = Cells(no_ligne, 5).Value C27 " "
txtVille.Value = Cells(no_ligne, 6).ValueC28
txtEmail.Value = Cells(no_ligne, 7).ValueC32
txtTelFixe.Value = Cells(no_ligne, 8).Value C29
txtTelPortable.Value = Cells(no_ligne, 9).Value C30
txtFax.Value = Cells(no_ligne, 10).Value C31
txtObservations.Value = Cells(no_ligne, 11).Value
End Sub
Bonjour Jno, bonjour le forum,
C'est pas très clair !... Le code du premier bouton cmdAjouter renvoie les valeur de l'UserForm dans l'onglet tandis que le code du second bouton récupère les valeurs de l'onglet dans l'UseForm...
Ayant compris que tu voulais renvoyer les données de l'userForm vers deux onglets différents je ne vois pas ce que viens faire le code du second bouton...
Voilà comment de procèderais :
Private Sub cmdAjouter_Click()
Dim B As Worksheet
Dim D As Worksheet
Dim DL As Integer
Set B = Sheets("BASE DE DONNEE")
Set D = Sheets("DDE DEVIS")
DL = B.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom de votre contact", vbCritical, "Champs manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom de votre contact", vbCritical, "Champs manquant"
txtPrenom.SetFocus
Else
B.Cells(LI, 1) = UCase(txtNom.Text)
D.Range("C24").Value = UCase(txtNom.Text)
'idem pour les autres textboxes
End If
Unload Me
UserForm1.Show
End Sub
Bonjour thau theme
Merci pour ta réponse, mais sa ne fonctionne pas, les données entrées dans le formulaire doivent être visible à partir de la ligne 7 colone A pour ma feuille base de donnée, si sa peut aider a y voir plus clair !
En tout cas merci.
Private Sub cmdAjouter_Click()
Dim B As Worksheet
Dim D As Worksheet
Dim DL As Integer
Set B = Sheets("BASE DE DONNEE")
Set D = Sheets("DDE DEVIS")
DL = B.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom de votre contact", vbCritical, "Champs manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom de votre contact", vbCritical, "Champs manquant"
txtPrenom.SetFocus
Else
B.Cells(LI, 1) = UCase(txtNom.Text)
D.Range("C24").Value = UCase(txtNom.Text)
B.Cells(LI, 2) = (txtPrenom.Text)
D.Range("C25").Value = (txtPrenom.Text)
B.Cells(LI, 3) = (txtEntreprise.Text)
D.Range("C23").Value = (txtEntreprise.Text)
B.Cells(LI, 4) = (txtAdresse.Text)
D.Range("C26").Value = (txtAdresse.Text)
B.Cells(LI, 5) = (txtCP.Text)
D.Range("C27").Value = (txtCP.Text)
B.Cells(LI, 6) = (txtVille.Text)
D.Range("C28").Value = (txtVille.Text)
B.Cells(LI, 7) = (txtEmail.Text)
D.Range("C32").Value = (txtEmail.Text)
B.Cells(LI, 8) = (txtTelFixe.Text)
D.Range("C29").Value = (txtTelFixe.Text)
B.Cells(LI, 9) = (txtTelPortable.Text)
D.Range("C30").Value = (txtTelPortable.Text)
B.Cells(LI, 10) = (txtFax.Text)
D.Range("C31").Value = (txtFax.Text)
B.Cells(LI, 11) = (txtObservations.Text)
End If
Unload Me
UserForm1.Show
End Sub
Re
En faite ton code m'as fait réfléchir à une nouvelle piste, j'ai crééé un nouveau bouton de commande que j'ai ajouté à mon userform, et j'ai rentré uniquement une partie de ton code et sa fonctionne impecc !
Private Sub CommandButton4_Click()
Dim B As Worksheet
Dim D As Worksheet
Dim DL As Integer
Set B = Sheets("BASE DE DONNEE")
Set D = Sheets("DDE DEVIS")
DL = B.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom de votre contact", vbCritical, "Champs manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom de votre contact", vbCritical, "Champs manquant"
txtPrenom.SetFocus
Else
D.Range("C24").Value = UCase(txtNom.Text)
D.Range("C25").Value = (txtPrenom.Text)
D.Range("C23").Value = (txtEntreprise.Text)
D.Range("C26").Value = (txtAdresse.Text)
D.Range("C27").Value = (txtCP.Text)
D.Range("C28").Value = (txtVille.Text)
D.Range("C32").Value = (txtEmail.Text)
D.Range("C29").Value = (txtTelFixe.Text)
D.Range("C30").Value = (txtTelPortable.Text)
D.Range("C31").Value = (txtFax.Text)
Maintenant j'ai encore plein d'autres soucis mais grace à toi sa en fait 1 en moins, on se retrouve sur le forum !