Erreur 1004 formulaire vba

Fermé
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022 - 6 sept. 2022 à 16:16
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022 - 13 sept. 2022 à 13:54

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

5 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
6 sept. 2022 à 17:14

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
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
6 sept. 2022 à 19:41

Bonjour à vous deux,

N'est ce pas plutôt 

End(xlDown)

Au lieu de 

End(x1Down)
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023
6 sept. 2022 à 20:06

Il est important, aussi, d'avoir une ligne avec "option explicit" en début du module.

0
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
7 sept. 2022 à 09:29

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

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
7 sept. 2022 à 10:01

Rien de spécial dans la colonne A de la ligne où cela stagne?

0
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
9 sept. 2022 à 11:35

Rien de spécial c'est à dire ? le tableau ne s'étend pas et les valeurs sont remplacés par celles entrées dans le formulaire au lieu d'ajouter une ligne.

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
9 sept. 2022 à 11:39

A toi de nous donner des informations, ou de partager ton fichier.

La colonne A de la ligne où cela stagne est bien remplie, rien de spécial comparé aux lignes précédentes?

0
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
9 sept. 2022 à 11:49

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 ?

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
12 sept. 2022 à 12:22

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

0
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
12 sept. 2022 à 15:47

Bonjour yg_be,

Merci de votre réponse, néanmoins le lien me mène sur le site de Microsoft comme ci dessous

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
12 sept. 2022 à 17:19

fais alors une recherche "excel listrows add".

0
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
12 sept. 2022 à 08:55

https://wetransfer.com/downloads/948017aab1d56b42e2cabc7e4c29d3f420220912065532/15d347

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 12 sept. 2022 à 20:18

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
feafe Messages postés 7 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 13 septembre 2022
13 sept. 2022 à 13:54

Merci ozone_,

Je teste ça et je vous redis. 

0