Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur d'execution 1004 - erreur definie par l'application ou par l'objet.

8 réponses
Avatar
mimine98
Bonjour,

je débute sur le vba et j'avais besoin de faire macro qui sauvegarde le détail de la facture sur un fichier historique de factures et qui en même temps efface certaines données.
J'ai réussi à me faire aider par les tuto trouvés sur youtube mais malgré avoir fait exactement pareil en remplaçant les bonnes cellules , j'a tout le temps ce message d'erreur 1004 qui me fait devenir folle !
je n'arrive pas à trouver le problème .
je suis sous excel 2010 , je sais pas si cela peut être un détail utile.

Sub Archiver()
For Each Item In Sheets("Facture").Range("A25:A36")
If Item.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
ligne = Sheets("Historique_facture").Range("A2").End(xlDown).Row + 1
ligne_origine = Item.Row
Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & ligne).Value = Sheets("Facture").Range("A" & ligne_origine).Value
Sheets("Historique_facture").Range("D" & ligne).Value = Sheets("Facture").Range("B" & ligne_origine).Value
Sheets("Historique_facture").Range("E" & ligne).Value = Sheets("Facture").Range("G" & ligne_origine).Value
Sheets("Historique_facture").Range("F" & ligne).Value = Sheets("Facture").Range("H" & ligne_origine).Value

End If
Next Item

' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value + 1

End Sub

le fichier si cela peut aider
https://cjoint.com/c/KBCsrSfORDf

Merci d'avance pour votre aide !

8 réponses

Avatar
MichD
Le 28/02/21 Í  13:23, mimine98 a écrit :
Bonjour,
je débute sur le vba et j'avais besoin de faire macro qui sauvegarde le détail
de la facture sur un fichier historique de factures et qui en même temps efface
certaines données.
J'ai réussi Í  me faire aider par les tuto trouvés sur youtube mais malgré avoir
fait exactement pareil en remplaçant les bonnes cellules , j'a tout le temps ce
message d'erreur 1004 qui me fait devenir folle !
je n'arrive pas Í  trouver le problème .
je suis sous excel 2010 , je sais pas si cela peut être un détail utile.
Sub Archiver()
For Each Item In Sheets("Facture").Range("A25:A36")
If Item.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
ligne = Sheets("Historique_facture").Range("A2").End(xlDown).Row +
1
ligne_origine = Item.Row
Sheets("Historique_facture").Range("A" & ligne).Value > Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & ligne).Value > Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & ligne).Value > Sheets("Facture").Range("A" & ligne_origine).Value
Sheets("Historique_facture").Range("D" & ligne).Value > Sheets("Facture").Range("B" & ligne_origine).Value
Sheets("Historique_facture").Range("E" & ligne).Value > Sheets("Facture").Range("G" & ligne_origine).Value
Sheets("Historique_facture").Range("F" & ligne).Value > Sheets("Facture").Range("H" & ligne_origine).Value
End If
Next Item
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value
+ 1
End Sub
le fichier si cela peut aider
https://cjoint.com/c/KBCsrSfORDf
Merci d'avance pour votre aide !

Bonjour,
La seule chose Í  modifier dans le code de la procédure "Archiver() est
cette ligne de code que tu modifies comme celle-ci :
ligne=Sheets("Historique_facture").Range("A:A").Find("*",LookIn:=xlFormulas,
_ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
Ton fichier : https://www.cjoint.com/c/KBCuioyOHij
MichD
Avatar
mimine98
Le dimanche 28 Février 2021 à 21:08 par MichD :
Le 28/02/21 Í  13:23, mimine98 a écrit :
Bonjour,
je débute sur le vba et j'avais besoin de faire macro qui sauvegarde
le détail
de la facture sur un fichier historique de factures et qui en même temps
efface
certaines données.
J'ai réussi Í  me faire aider par les tuto trouvés
sur youtube mais malgré avoir
fait exactement pareil en remplaçant les bonnes cellules , j'a tout le
temps ce
message d'erreur 1004 qui me fait devenir folle !
je n'arrive pas Í  trouver le problème .
je suis sous excel 2010 , je sais pas si cela peut être un détail
utile.
Sub Archiver()
For Each Item In Sheets("Facture").Range("A25:A36")
If Item.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
ligne =
Sheets("Historique_facture").Range("A2").End(xlDown).Row +
1
ligne_origine = Item.Row
Sheets("Historique_facture").Range("A" & ligne).Value
> Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & ligne).Value
> Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & ligne).Value
> Sheets("Facture").Range("A" &
ligne_origine).Value
Sheets("Historique_facture").Range("D" & ligne).Value
> Sheets("Facture").Range("B" &
ligne_origine).Value
Sheets("Historique_facture").Range("E" & ligne).Value
> Sheets("Facture").Range("G" &
ligne_origine).Value
Sheets("Historique_facture").Range("F" & ligne).Value
> Sheets("Facture").Range("H" &
ligne_origine).Value
End If
Next Item
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value =
Sheets("Facture").Range("B20").Value
+ 1
End Sub
le fichier si cela peut aider
https://cjoint.com/c/KBCsrSfORDf
Merci d'avance pour votre aide !
Bonjour,
La seule chose Í  modifier dans le code de la procédure
"Archiver() est
cette ligne de code que tu modifies comme celle-ci :
ligne=Sheets("Historique_facture").Range("A:A").Find("*",LookIn:=xlFormulas,
_ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
Ton fichier : https://www.cjoint.com/c/KBCuioyOHij
MichD
Bonjour
désolée pour ma réponse tardive . Mercii merci merci ! c'est génial .
juste une petite question concernant le numero de facture . j'ai essayé de mettre le " bon " format souhaité c'est a dire 2021-01 , 2021-02 etc... mais il semblerait qu'il est pas content avec ce format . il me note erreur 13, incompatibilité de type.
est ce que c'est "value" qui fait erreur ?
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value + 1
merci par avance pour votre aide et votre efficacité !
Avatar
MichD
juste une petite question concernant le numero de facture . j'ai essayé de
mettre le " bon " format souhaité c'est a dire 2021-01 , 2021-02 etc... mais il
semblerait qu'il est pas content avec ce format . il me note erreur 13,
incompatibilité de type.
est ce que c'est "value" qui fait erreur ?
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value
+ 1
merci par avance pour votre aide et votre efficacité !

Cette ligne de code :
Sheets("Historique_facture").Range("F" & ligne).Value Sheets("Facture").Range("H" & ligne_origine).Value
Cette ligne de code copie la donnée de la feuille "Facture" de la
colonne H dans la cellule F dans la facture historique.
Il y a pour sÍ»r un problème avec la référence Í  ces adresses.
A ) Dans la feuille "Facture", la seule date que tu as est en F20
Cette section de la ligne de code :
Sheets("Facture").Range("H" & ligne_origine).Value
devrait être :
Sheets("Facture").Range("F20").Value
B ) Dans la feuille "Historique facture", La colonne F représente des
montants, ce n'est pas des dates. Il faudrait ajouter une colonne
"G" pour indiquer la date des factures.
Sheets("Historique_facture").Range("G" & ligne).Value
Et tu ajoutes cette ligne de code pour obtenir la format que tu
désires
Sheets("Historique_facture").Range("G" & ligne).NumberFormat="YYYY MM
En résumé, les deux dernières lignes de code devraient s'écrire comme ceci:
Sheets("Historique_facture").Range("G" & ligne).Value Sheets("Facture").Range("F20").Value
Sheets("Historique_facture").Range("G" & ligne).NumberFormat = "YYYY MM"
MichD
Avatar
mimine98
Le dimanche 28 Février 2021 à 19:23 par mimine98 :
Bonjour,
je débute sur le vba et j'avais besoin de faire macro qui sauvegarde le
détail de la facture sur un fichier historique de factures et qui en
même temps efface certaines données.
J'ai réussi à me faire aider par les tuto trouvés sur
youtube mais malgré avoir fait exactement pareil en remplaçant
les bonnes cellules , j'a tout le temps ce message d'erreur 1004 qui me fait
devenir folle !
je n'arrive pas à trouver le problème .
je suis sous excel 2010 , je sais pas si cela peut être un détail
utile.
Sub Archiver()
For Each Item In Sheets("Facture").Range("A25:A36")
If Item.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
ligne =
Sheets("Historique_facture").Range("A2").End(xlDown).Row +
1
ligne_origine = Item.Row
Sheets("Historique_facture").Range("A" &
ligne).Value = Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" &
ligne).Value = Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" &
ligne).Value = Sheets("Facture").Range("A" &
ligne_origine).Value
Sheets("Historique_facture").Range("D" &
ligne).Value = Sheets("Facture").Range("B" &
ligne_origine).Value
Sheets("Historique_facture").Range("E" &
ligne).Value = Sheets("Facture").Range("G" &
ligne_origine).Value
Sheets("Historique_facture").Range("F" &
ligne).Value = Sheets("Facture").Range("H" &
ligne_origine).Value
End If
Next Item
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value =
Sheets("Facture").Range("B20").Value + 1
End Sub
le fichier si cela peut aider
https://cjoint.com/c/KBCsrSfORDf
Merci d'avance pour votre aide !
Bonsoir,
Merci pour votre réponse. j'ai fait la modif mais je pense que j'ai du mal m'exprimer.
le NUMERO DE FACTURE n'est pas reconnu avec le code pour incrémenter le chiffre suivant .
le code suivant :
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value + 1
il calcule le numéro de facture suivant si le numéro de facture est par ex 2000, 2001 etc...
Cependant je souhaite mettre la codification suivante 2021-01 , 2021-02 etc..
2021 pour l'année et 01, 02 pour le numero de facture de l'année. il semblerait que ce code ne fonctionne pas .
je remets la macro en entier sachant que le dernier code mets la macro en erreur ( erreur 13. ) soulignement en jaune
Sub Archiver()
For Each Item In Sheets("Facture").Range("A25:A36")
If Item.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
ligne = Sheets("Historique_facture").Range("A:A").Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
ligne_origine = Item.Row
Sheets("Historique_facture").Range("A" & ligne).Value = Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & ligne).Value = Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & ligne).Value = Sheets("Facture").Range("A" & ligne_origine).Value
Sheets("Historique_facture").Range("D" & ligne).Value = Sheets("Facture").Range("B" & ligne_origine).Value
Sheets("Historique_facture").Range("E" & ligne).Value = Sheets("Facture").Range("G" & ligne_origine).Value
Sheets("Historique_facture").Range("F" & ligne).Value = Sheets("Facture").Range("F" & ligne_origine).Value
Sheets("Historique_facture").Range("G" & ligne).Value = Sheets("Facture").Range("F20").Value
Sheets("Historique_fac ture").Range("G" & ligne).NumberFormat = "YYYY MM"
End If
Next Item
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value = Sheets("Facture").Range("B20").Value + 1
End Sub
belle soirée et merci encore !
Avatar
MichD
Voici ta procédure : mes commentaires sont dans le code :
'------------------------------------------------
Sub Archiver()
Dim LigneData As Long, Ligne As Long
Dim C As Range
'Il ne faut pas utiliser des expressions propres au langage VBA
'comme variable... cela peut porter Í  confusion. Exemple : Item
For Each C In Sheets("Facture").Range("A25:A36")
If C.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
'Recherche la première ligne non occupée
Ligne = Sheets("Historique_facture").Range("A:F").Find("*",
LookIn:=xlValues, _
SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row + 1
Sheets("Historique_facture").Range("A" & Ligne).Value Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & Ligne).Value Sheets("Facture").Range("F10").Value
LigneData = 26 'Compteur, tes données débutent en ligne 26
dans la feuille Facture
Sheets("Historique_facture").Range("C" & Ligne).Value Sheets("Facture").Range("A" & LigneData).Value
Sheets("Historique_facture").Range("D" & Ligne).Value Sheets("Facture").Range("B" & LigneData).Value
Sheets("Historique_facture").Range("E" & Ligne).Value Sheets("Facture").Range("G" & LigneData).Value
Sheets("Historique_facture").Range("F" & Ligne).Value Sheets("Facture").Range("H" & LigneData).Value
LigneData = LigneData + 1
End If
Next
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value Sheets("Facture").Range("B20").Value + 1
End Sub
'------------------------------------------------
MichD
Avatar
MichD
Ce serait mieux comme ceci...terminer le premier café de la journée!
'--------------------------------------------
Sub Archiver()
Dim Ligne As Long
Dim C As Range
'Il ne faut pas utiliser des expressions propres au langage VBA
'comme variable... cela peut porter Í  confusion. Exemple : Item
For Each C In Sheets("Facture").Range("A25:A36")
If C.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
'Recherche la première ligne non occupée
Ligne = Sheets("Historique_facture").Range("A:F").Find("*",
LookIn:=xlValues, _
SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row + 1
Sheets("Historique_facture").Range("A" & Ligne).Value Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & Ligne).Value Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & Ligne).Value Sheets("Facture").Range("A" & C.Row).Value
Sheets("Historique_facture").Range("D" & Ligne).Value Sheets("Facture").Range("B" & C.Row).Value
Sheets("Historique_facture").Range("E" & Ligne).Value Sheets("Facture").Range("G" & C.Row).Value
Sheets("Historique_facture").Range("F" & Ligne).Value Sheets("Facture").Range("H" & C.Row).Value
LigneData = LigneData + 1
End If
Next
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value Sheets("Facture").Range("B20").Value + 1
End Sub
'--------------------------------------------------------
MichD
Avatar
mimine98
Le vendredi 05 Mars 2021 à 13:02 par MichD :
Ce serait mieux comme ceci...terminer le premier café de la
journée!
'--------------------------------------------
Sub Archiver()
Dim Ligne As Long
Dim C As Range
'Il ne faut pas utiliser des expressions propres au langage VBA
'comme variable... cela peut porter Í  confusion. Exemple : Item
For Each C In Sheets("Facture").Range("A25:A36")
If C.Value = "" Then
'ne rien faire
Else
'archiver le contenu de la ligne
'Recherche la première ligne non occupée
Ligne =
Sheets("Historique_facture").Range("A:F").Find("*",
LookIn:=xlValues, _
SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row + 1
Sheets("Historique_facture").Range("A" & Ligne).Value
Sheets("Facture").Range("B20").Value
Sheets("Historique_facture").Range("B" & Ligne).Value
Sheets("Facture").Range("F10").Value
Sheets("Historique_facture").Range("C" & Ligne).Value
Sheets("Facture").Range("A" & C.Row).Value
Sheets("Historique_facture").Range("D" & Ligne).Value
Sheets("Facture").Range("B" & C.Row).Value
Sheets("Historique_facture").Range("E" & Ligne).Value
Sheets("Facture").Range("G" & C.Row).Value
Sheets("Historique_facture").Range("F" & Ligne).Value
Sheets("Facture").Range("H" & C.Row).Value
LigneData = LigneData + 1
End If
Next
' on reinitialise la facture
Sheets("Facture").Range("A25:A36").ClearContents
Sheets("Facture").Range("G25:G36").ClearContents
'calcul du numero de facture suivant
Sheets("Facture").Range("B20").Value
Sheets("Facture").Range("B20").Value + 1
End Sub
'--------------------------------------------------------
MichD
Merci MichD je viens de la recopier dans mon module sur mon fichier .
cependant l'avez vous tester car j'ignore pourquoi mais cette partie dessous se met en rouge et du coup encore un message incompréhensible pour les débutants (lol) :
Ligne = Sheets("Historique_facture").Range("A:F").Find("*",
LookIn:=xlValues, _
SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row + 1
peut être que c'est mon excel ? je suis sure que ça se joue à pas grand chose ! grrrrr
Avatar
MichD
Je te retourne le fichier afin de copier-coller correctement la
procédure. Oui, je l'ai testée.
https://www.cjoint.com/c/KCfp66kY2xj
MichD