Erreur 1004 formulaire vba
feafe Messages postés 7 Statut Membre -
Bonjour à tous et à toutes,
Je suis entrain de créer un tableau qui répertorie toute les commandes de mes clients avec une entrée par formulaire. Je suis novice en VBA je me suis donc aidée de cette vidéo :
https://www.youtube.com/watch?v=PzYUyB2HjgM
Et mon script donne ça :
'***
'procédure pour ajout d'une nouvelle commande
'***
Private Sub btnAjout_Click()
Sheets("Commande").Activate
Range("A1").Select
Selection.End(x1down).Select 'on se positione sur la dernière ligne non vide
Selection.Offset(1, 0).Select 'on se décale d'une ligne vers le bas
ActiveCell = cboagence.Value
ActiveCell.Offset(0, 1).Value = txtclient
ActiveCell.Offset(0, 2).Value = txtref
ActiveCell.Offset(0, 3).Value = cbodate
ActiveCell.Offset(0, 4).Value = txtcontact
ActiveCell.Offset(0, 5).Value = txtnumcontact
ActiveCell.Offset(0, 6).Value = txtadresse
ActiveCell.Offset(0, 7).Value = txtspec
ActiveCell.Offset(0, 8).Value = txtdemandepart
ActiveCell.Offset(0, 9).Value = txtdevis
ActiveCell.Offset(0, 10).Value = txtdetail
ActiveCell.Offset(0, 11).Value = cbofournisseur
ActiveCell.Offset(0, 12).Value = txtvaleur
MsgBox "Votre commande a bien été ajoutée", vbOKOnly + vbInformation, "CONFIRMATION"
End Sub
'****
'procédure pour reinitialiser les champs du formulaire
'****
Private Sub btneffacer_Click()
cboagence = ""
txtclient = ""
txtref = ""
cbodate = ""
txtcontact = ""
txtnumcontact = ""
txtadresse = ""
txtspec = ""
txtdemandepart = ""
txtdevis = ""
txtdetail = ""
cbofournisseur = ""
txtvaleur = ""
End Sub
'****
'procédure pour fermer le formulaire
'****
Private Sub btnfermer_Click()
Unload Me
End Sub
'****
'afficher la liste des commandes
'****
Private Sub btnsource_Click()
Sheets("Commande").Activate
Range("a1").Select
End Sub
'*****
'procédure permettant de d'activer le bouton d'ajout de
'commande en fonction de si la première case est vide ou non
'*****
Private Sub cboagence_Change()
If cboagence <> "" Then
btnAjout.Enabled = True 'activer le bouton
Else
btnAjout.Enabled = False 'désactiver le bouton
End If
End Sub
Malgré tout j'ai une erreur 1004 au niveau de la ligne 4 (hors commentaire)
Si quelqu'un a une piste je suis preneur.
Merci d'avance
Windows / Chrome 92.0.4515.107
- Erreur 1004 formulaire vba
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
5 réponses
bonjour,
Merci de suivre ces instructions quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Quelle est l'instruction sur la ligne 4?
Il est préférable de ne pas utiliser ainsi Select et Active.
dim cl as range
set cl=Sheets("Commande").Range("A1").End(x1down).Offset(1, 0)
cl = cboagence
cl.Offset(0, 1) = txtclient
D'abord merci à vous deux pour votre réponse si rapide. Je m'excuse de la présentation de mon message je n'avais pas trouver comment le mettre en forme correctement. J'y remédie dans celui là.
Option Explicit
'***'
'procédure pour ajout d une nouvelle commande'
'***'
Private Sub btnAjout_Click()
Dim cl As Range
Set cl = Sheets("Commande").Range("A1").End(xlDown).Offset(1, 0)
cl = cboagence
cl.Offset(0, 3) = txtclient
cl.Offset(0, 4) = txtref
cl.Offset(0, 5) = cbodate
cl.Offset(0, 6) = txtcontact
cl.Offset(0, 7) = txtnumcontact
cl.Offset(0, 8) = txtadresse
cl.Offset(0, 9) = txtspec
cl.Offset(0, 10) = txtdemandepart
cl.Offset(0, 11) = txtdevis
cl.Offset(0, 12) = txtdetail
cl.Offset(0, 13) = txtvaleur
cl.Offset(0, 14) = cbofournisseur
MsgBox "Votre commande a bien été ajoutée", vbOKOnly + vbInformation, "CONFIRMATION"
End Sub
'****'
'procédure pour reinitialiser les champs du formulaire'
'****'
Private Sub btneffacer_Click()
cboagence = ""
txtclient = ""
txtref = ""
cbodate = ""
txtcontact = ""
txtnumcontact = ""
txtadresse = ""
txtspec = ""
txtdemandepart = ""
txtdevis = ""
txtdetail = ""
cbofournisseur = ""
txtvaleur = ""
End Sub
'****'
'procédure pour fermer le formulaire'
'****'
Private Sub btnfermer_Click()
Unload Me
End Sub
'****'
'afficher la liste des commandes'
'****'
Private Sub btnsource_Click()
Sheets("Commande").Activate
Range("a1").Select
End Sub
'*****'
'procédure permettant de d'activer le bouton d ajout de'
'commande en fonction de si la première case est vide ou non'
'*****'
Private Sub cboagence_Change()
If cboagence <> "" Then
btnAjout.Enabled = True 'activer le bouton'
Else
btnAjout.Enabled = False 'désactiver le bouton'
End If
End Sub
Alors j'ai ajouté mon option explicit au début, j'ai modifié mon code selon vos conseils et en effet c'est bien xldown et non x1down. Ca fonctionne beaucoup mieux comme ça néanmoins j'arrive à rentrer 2 commandes et ensuite ça stagne sur la même ligne. Je me demande si il ne faudrait pas que je fasse une boucle qui incrémente le nombre de ligne à chaque fois ?
En tout cas merci de vos réponses elles m'ont bien aidées
Biensur je vous partage le fichier. Non la colonne est bien remplie et la ligne aussi. Y a t il une procédure pour vous l'envoyer ou un lien wetransfer suffit ?
Je pense que la méthode que tu utilises n'ajoute pas des lignes dans le tableau.
Je pense préférable de faire ainsi: https://docs.microsoft.com/fr-fr/office/vba/api/excel.listrows.add
https://wetransfer.com/downloads/948017aab1d56b42e2cabc7e4c29d3f420220912065532/15d347
Bonjour,
Voici une proposition
'***
'procédure pour ajout d'une nouvelle commande
'***
Private Sub btnAjout_Click()
Dim cl As Range
Dim cel As Range
Application.ScreenUpdating = False
Sheets("Commande").Select
For Each cel In Range("A:A")
If cel.Value = "" Then cel.Select: Exit For
Next cel
'Set cl = Sheets("Commande").Range("A1").End(xlDown).Offset(1, 0)
cel = cboagence
cel.Offset(0, 3) = txtclient
cel.Offset(0, 4) = txtref
cel.Offset(0, 5) = cbodate
cel.Offset(0, 6) = txtcontact
cel.Offset(0, 7) = txtnumcontact
cel.Offset(0, 8) = txtadresse
cel.Offset(0, 9) = txtspec
cel.Offset(0, 10) = txtdemandepart
cel.Offset(0, 11) = txtdevis
cel.Offset(0, 12) = txtdetail
cel.Offset(0, 13) = txtvaleur
cel.Offset(0, 14) = cbofournisseur
MsgBox "Votre commande a bien été ajoutée", vbOKOnly + vbInformation, "CONFIRMATION"
Application.ScreenUpdating = True
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question

Bonjour à vous deux,
N'est ce pas plutôt
Au lieu de
Il est important, aussi, d'avoir une ligne avec "option explicit" en début du module.