XL 2010 vba userform copies des données

jokerfidelio

XLDnaute Occasionnel
Bonjour a tous,

Concernant ce bout de code, une anomalie se produit a la copie des données sur les feuilles.
au lieu d’être copié comme indiqué sur le code sur l'onglet "BD" les données sont copiés sur l'onglet qui est actif !
Pouvez vous m'aider ?

VB:
Private Sub CommandButton1_Click()

Dim L As Integer

 If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     Range("A" & L).Value = TextBox_date
     Range("B" & L).Value = TextBox_nom
     Range("C" & L).Value = TextBox_prenom
     Range("D" & L).Value = TextBox_infolog
     Range("E" & L).Value = ComboBox_chef
     Range("G" & L).Value = ComboBox_certification
     Range("H" & L).Value = ComboBox_montage
     Range("J" & L).Value = TextBox_observation
      End If

End Sub

D’avance merci a vous
 

Santulud

XLDnaute Occasionnel
Bonjour,

c'est normal, tu n'indique pas sur quelle feuille les données doivent être copiées, donc par défaut, sur l'onglet actif.
Ta variable "L" n'est pas rattaché à la feuille "BD", elle va juste compter dessus.

essaye avec ça :
VB:
Private Sub CommandButton1_Click()

Dim L As Integer
Dim ws as Worksheets

ws=worksheets("BD")

 If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     ws.Range("A" & L).Value = TextBox_date
     ws.Range("B" & L).Value = TextBox_nom
     ws.Range("C" & L).Value = TextBox_prenom
     ws.Range("D" & L).Value = TextBox_infolog
     ws.Range("E" & L).Value = ComboBox_chef
     ws.Range("G" & L).Value = ComboBox_certification
     ws.Range("H" & L).Value = ComboBox_montage
     ws.Range("J" & L).Value = TextBox_observation
      End If

End Sub
 

jokerfidelio

XLDnaute Occasionnel
Bonjour,

c'est normal, tu n'indique pas sur quelle feuille les données doivent être copiées, donc par défaut, sur l'onglet actif.
Ta variable "L" n'est pas rattaché à la feuille "BD", elle va juste compter dessus.

essaye avec ça :
VB:
Private Sub CommandButton1_Click()

Dim L As Integer
Dim ws as Worksheets

ws=worksheets("BD")

If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     ws.Range("A" & L).Value = TextBox_date
     ws.Range("B" & L).Value = TextBox_nom
     ws.Range("C" & L).Value = TextBox_prenom
     ws.Range("D" & L).Value = TextBox_infolog
     ws.Range("E" & L).Value = ComboBox_chef
     ws.Range("G" & L).Value = ComboBox_certification
     ws.Range("H" & L).Value = ComboBox_montage
     ws.Range("J" & L).Value = TextBox_observation
      End If

End Sub
merci d’avoir repondu
erreur de compilation
utilisation incorrecte de la propriété
 

Santulud

XLDnaute Occasionnel
autant pour moi, je suis allez un peu trop vite en besogne

VB:
Private Sub CommandButton1_Click()

Dim L As Integer
Dim ws as Worksheet

set ws=sheets("BD")

If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     ws.Range("A" & L).Value = TextBox_date
     ws.Range("B" & L).Value = TextBox_nom
     ws.Range("C" & L).Value = TextBox_prenom
     ws.Range("D" & L).Value = TextBox_infolog
     ws.Range("E" & L).Value = ComboBox_chef
     ws.Range("G" & L).Value = ComboBox_certification
     ws.Range("H" & L).Value = ComboBox_montage
     ws.Range("J" & L).Value = TextBox_observation
      End If

End Sub
 

jokerfidelio

XLDnaute Occasionnel
autant pour moi, je suis allez un peu trop vite en besogne

VB:
Private Sub CommandButton1_Click()

Dim L As Integer
Dim ws as Worksheet

set ws=sheets("BD")

If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     ws.Range("A" & L).Value = TextBox_date
     ws.Range("B" & L).Value = TextBox_nom
     ws.Range("C" & L).Value = TextBox_prenom
     ws.Range("D" & L).Value = TextBox_infolog
     ws.Range("E" & L).Value = ComboBox_chef
     ws.Range("G" & L).Value = ComboBox_certification
     ws.Range("H" & L).Value = ComboBox_montage
     ws.Range("J" & L).Value = TextBox_observation
      End If

End Sub

Merci beaucoup excellent cela fonctionne

Une autre question en relation avec ce code je n'arrive pas a adapter la date du jour sur les texbox j'ai cela mais je n'arrive pas a l'adapter !
textbox1.value=format(now,"dd,mm,yyyy")

exemple a modifier

ws.Range("A" & L).Value = TextBox_date


merci d'avance
 

jokerfidelio

XLDnaute Occasionnel
par contre apres plusieurs essai j'ai aussi sur mon userform un deuxieme bouton qui copie les donnees sur un autre onglet du coup
erreur execution 13 de incomptabilite

VB:
Private Sub CommandButton4_Click()

Dim L As Integer
Dim ws As Worksheets

Set ws = Sheets("BD_COMBIS")

 If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("BD_COMBIS").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     Range("A" & L).Value = TextBox_datecombi
     Range("E" & L).Value = TextBox_combi
     Range("D" & L).Value = TextBox_codeinfolog
       End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous ne pouvez pas affecter un objet à une collection. (je parle du type Worksheets dans la déclaration de ws)
Vous auriez intérêt à mettre vos plages sous forme de tableau et à utiliser mon complément CBxLCtlA.xlam: il s'occupe correctement de beaucoup de choses dont vous n'aurez plus à programmer les détails. Presque tout se définira dans la UserForm_Initialize. Je joindrai son précurseur à installer si ça vous intéresse.
Quels sont les liens entres la feuille BD et la feuille BD_COMBIS ?
 

jokerfidelio

XLDnaute Occasionnel
Bonjour.
Vous ne pouvez pas affecter un objet à une collection. (je parle du type Worksheets dans la déclaration de ws)
Vous auriez intérêt à mettre vos plages sous forme de tableau et à utiliser mon complément CBxLCtlA.xlam: il s'occupe correctement de beaucoup de choses dont vous n'aurez plus à programmer les détails. Presque tout se définira dans la UserForm_Initialize. Je joindrai son précurseur à installer si ça vous intéresse.
Quels sont les liens entres la feuille BD et la feuille BD_COMBIS ?

apres reflexion aucune les deux peuvent être géré sur la mème feuille BD
j'ai pas réellement tout compris mais merci de votre aide
 

Dranreb

XLDnaute Barbatruc
Par ailleurs j'ai l'impression que vous allez revoir l'UserForm suite au constat que tout peut se gérer dans la même feuille. Alors je joins aussi mon générateur d'UserForm.
 

Pièces jointes

  • GénérateurUFm.xlsm
    378.6 KB · Affichages: 9
  • CBxLCtlA.xlsm
    170 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG