Erreur 424 et correction de code
Bonsoir a toutes et tous,
Je suis débutant en codage VBA excel et j'ai voulu automatiser les tâches. J'ai réussi pour certaines choses (liste déroulante, recherche v, formules de calcul).Mais quand j'ai voulu faire l'archivage et la numérotation automatique, j'ai été obligé d'écrire une macro que j'ai nommé "ARCHIVER_NUMÉROTER". avant cela j'ai fait une autre macro que j'ai nommé "NUMÉROTATION" que je compte lancer a partir de la macro "ARCHIVER_NUMÉROTER". le problème, c'est que lorsque je lance la commande exécuter la macro, j'ai un message "erreur d'exécution 424" qui apparait et qui "objet requis". j'ai bien trouvé des tutos sur la question mais ils sont en anglais. Svp, qu'est ce que cette erreur 424 et que veut dire objet requis ? Pouvez vous m'aider à écrire correctement ce code ?. Je joins le fichier.il ne contient aucune données personnelles ou vitales. Les tableaux contiennent uniquement des données fictives. Merci d'avance pour le coup de main.
PATMALONDA
Bonsoir a toutes et tous,
J'ai créé deux feuilles: une feuille "FACTURE" et une feuille "DEVIS". Ces deux feuilles utilisent deux base de données ("CLIENTS" et "PRESTATIONS")qui sont supposées alimenter les feuilles facture et devis. J'ai aussi créé deux feuilles d'archives numériques(archives des factures nommée "ARCFAC" et archives des devis nommée "ARCHDEV". C'est à ce niveau que se situe mon problème: J'ai écrit une macro pour automatiser l'archivage des données de la facture/devis, l'automatisation de la numérotation et la remise à zéro des données afin de permettre l'édition d'une nouvelle facture: chaque fois que je lance la commande exécuter la macro, elle me retourne un message "erreur 'exécution : objet requis". Pouvez-vous m'expliquer c Ve que cela veut dire ? Qu'est ce que j'ai mal fait ou pas fait ? Pouvez-vous m'aider à réécrire cette macro ?. Je vous remercie d'avance pour tout ce que vous ferez.
PATMALONDA
bonsoir,
quelques erreurs de syntaxe corrigées.
Sub ARCHIVER_NUMEROTER()
ligne = Sheets("ARCFACT").Range("A2").End(xlDown).Row + 1
Sheets("ARCFACT").Range("A" & ligne).Value = Sheets("FACTURE").Range("G12").Value 'N°facture
Sheets("ARCFACT").Range("B" & ligne).Value = Sheets("FACTURE").Range("G11").Value 'Date facture
Sheets("ARCFACT").Range("C" & ligne).Value = Sheets("FACTURE").Range("B11").Value 'Nom client
Sheets("ARCFACT").Range("D" & ligne).Value = Sheets("FACTURE").Range("B12").Value 'Adresse client
Sheets("ARCFACT").Range("E" & ligne).Value = Sheets("FACTURE").Range("B13").Value 'Téléphone client
Sheets("ARCFACT").Range("F" & ligne).Value = Sheets("FACTURE").Range("B14").Value 'Email client
Sheets("ARCFACT").Range("G" & ligne).Value = Sheets("FACTURE").Range("G18").Value 'Montant HT
Sheets("ARCFACT").Range("H" & ligne).Value = Sheets("FACTURE").Range("F18").Value 'Tva
Sheets("ARCFACT").Range("I" & ligne).Value = Sheets("FACTURE").Range("G37").Value 'Montant TTC
Numérotation
Sheets("FACTURE").Range("G11").ClearContents
Sheets("FACTURE").Range("A18:A34").ClearContents
Sheets("FACTURE").Range("D18:D34").ClearContents
End Sub
Sub Numérotation()
If MsgBox("valider la facture ?", 36, "confirmation") = vbYes Then
part1 = Year(Date)
part2 = Format(Month(Date), "00")
part3 = Right(Range("G12"), 4)
Sheets("facture").Range("G12") = "FAC" & "-" & part1 & "-" & part2 & "-" & Format(Int(part3) + 1, "0000")
End If
End SubBonjour h2so4,
Un très grand merci pour la rapidité de ta réponse et la correction de mon code d'archivage et de numérotation automatique de ma facture. J'ai néanmoins quelques remarques :
1)Tu ne m'as pas expliqué ce que "erreur d'exécution 424 :objet requis" veut dire.
2)Tu me dis dans ton message que tu as corrigé quelques erreurs de syntaxe mais tu ne m'as pas dit lesquelles. N'oublie pas que je suis débutant et il faut donc que j’apprenne afin de me corriger pour les prochaines fois.
3) Dans ta correction, je vois qu'il y deux macros qui se suivent.Est ce dire que les deux macros vont s'exécuter l'une après l'autre ? peux tu m'indiquer comment tu as fait pour que les deux macros se suivent dans le code ? (toujours l'apprentissage).
4) Quand je lance l'exécution de la macro pour vérification, elle me retourne le message suivant : "erreur d'exécution13:incompatibilité type". Le débogage me renvoie à la dernière ligne de la 2eme macro : Sheets("facture").Range("G12") = "FAC" & "-" & part1 & "-" & part2 & "-" & Format(Int(part3) + 1, "0000"). Stp, qu'est ce qui ne va pas ?
Je suis désolé de te déranger pour des choses aussi simple mais comme je te le dis, je débute et je suis très vite perturbé par les messages d"erreur auquelles je ne comprends pas encore grand chose. Au passage si tu connais un site où il explique tout cela simplement, je suis preuneur. Encore une fois merci grand merci pour ton aide.
Patmalonda
bonjour,
1)Tu ne m'as pas expliqué ce que "erreur d'exécution 424 :objet requis" veut dire.
je veux bien aider, mais je ne vais pas te donner un cours, ni te répéter ce que tu peux trouver en faisant une simple recherche sur internet. Donc fais tes recherches et reviens avec tes questions si tu as besoin de plus d'explication.
2)Tu me dis dans ton message que tu as corrigé quelques erreurs de syntaxe mais tu ne m'as pas dit lesquelles. N'oublie pas que je suis débutant et il faut donc que j’apprenne afin de me corriger pour les prochaines fois.
tu peux aisément comparer ton code avec le code que j'ai fourni et voir les corrections...
3) Dans ta correction, je vois qu'il y deux macros qui se suivent.Est ce dire que les deux macros vont s'exécuter l'une après l'autre ? peux tu m'indiquer comment tu as fait pour que les deux macros se suivent dans le code ? (toujours l'apprentissage).
Non, les macros ne s'enchainent pas automatiquement . Il faut qu'on en demande l'exécution (via un bouton, via un appel dans une autre macro, via un événement, manuellement)
ici la seconde macro "Numérotation" est lancée à partir de la macro "ARCHIVER_NUMEROTER" par l'instruction 'Numérotation'.
4) Quand je lance l'exécution de la macro pour vérification, elle me retourne le message suivant : "erreur d'exécution13:incompatibilité type". Le débogage me renvoie à la dernière ligne de la 2eme macro : Sheets("facture").Range("G12") = "FAC" & "-" & part1 & "-" & part2 & "-" & Format(Int(part3) + 1, "0000"). Stp, qu'est ce qui ne va pas ?
J'ai en effet oublié une correction dans le code de la macro "Numérotation", qui peut expliquer que tu reçoives cette erreur dans certains cas. Cas où les 4 derniers caractères de G12 sur la feuille active ne sont pas des chiffres. J'ai corrigé en précisant le nom de la feuille sur laquelle prendre la valeur de G12.
voici une correction. Si cette correction ne solutionne pas le problème, c'est qu'il y a un problème avec les données dans ton classeur. part3 qui est construit à partir de G12 sur la feuille facture, n'est pas numérique.
Sub Numérotation()
If MsgBox("valider la facture ?", 36, "confirmation") = vbYes Then
part1 = Year(Date)
part2 = Format(Month(Date), "00")
part3 = Right(Sheets("facture").Range("G12"), 4)
Sheets("facture").Range("G12") = "FAC" & "-" & part1 & "-" & part2 & "-" & Format(Int(part3) + 1, "0000")
End If
End SubMon cher H2so4,
Bonsoir à toi. Merci pour tes conseils pour le reste, je ferais comme tu as dit. J'étais tellement persuadé que j'avais résolu mes problèmes que j'ai dupliqué la macro pour l'affecter à ma feuille archive devis (ARCHDEV). Malheureusement, cela ne fonctionne toujours pas. Et en plus toutes les recherchesv que j'ai faite pour automatiser la saisie dans ma facture et mon devis ne fonctionnent plus. Je ne sais pas trop pourquoi. Je suis complètement découragé. Peux-tu - je t’en prie - m'aider à résoudre tout ça ? Je t'envoie une nouvelle copie du classeur. Jette y un œil pour me dire ce qui ne va pas. Merci pour tout et excuse-moi pour le dérangement.
Patmalonda
Bonjour,
Je regarderai dès que j’ai accès à mon pc, la semaine prochaine.
Salut
C.'est compris. Bonne semaine à toi.
Patmalonda
bonsoir,
1er problème : référence circulaire : ta formule sur facture en G37 demande de faire la somme de G36 et G37. ce qui te donne ce message. tu voulais sans doute dire la somme de G35 et G36
2eme problème : rechercheV,(facture) : la première colonne du tableau de recherche doit être celle du critère de recherche, Or tu as mis ton tableau à partir de la colonne A, alors que c'est la colonne B qui contient ton critère.
3eme problème : recherchev(devis) : ta formule contient une erreur #REF!, un des paramètres (en l'occurrence celui du tableau de recherche) n'est pas correct.
4ème problème : les macros : avoir 2 macros différentes qui portent le même nom, cela pose des problèmes. J'ai donc renommé tes macros Numérotationfacture et numérotationdevis et introduit les corrections que j'avais suggérées précédemment.
5ème problème : dans ta procédure d'archivage des devis tu détermines la ligne où archiver ton devis en fonction de la feuille ARCFACT et non ARCHDEV. j'ai fait la correction.