Pb code VBA numérotation automatique

Bonjour,
Je viens demander vous demander de l’aide…
J’ai suivi à la lettre le tutoriel pour avec une numérotation automatique des factures sur Excel grâce à une macro en suivant ce tutoriel : Tutoriel Youtube

Tout se passait bien jusqu’à ce que j’efface une colonne vide, ce qui a dû m’obliger à décaler toutes les valeurs dans le code. Mais depuis je rencontre des soucis. Il ne reconnaissait plus la 2e ligne de code alors que la 1ère fois ça marchait sans souci…
J’ai alors décidé de tout recommencer mais alors maintenant, ma facture n’apparait qu’en ligne 5 en laissant les 4 premières lignes vides et en écrasant cette fameuse ligne 5 à chaque fois que j’essaye d’archiver une nouvelle facture. J’avoue que je suis complétement perdue… Est-ce que vous auriez une explication à ce problème ?

Mon code :
ligne = Range(« A2 »).End(xlDown).Row + 1

Sheets(« Historique_factures »).Range(« A » & ligne).Value = Sheets(« Facture »).Range(« D6 »).Value
Sheets(« Historique_factures »).Range(« B » & ligne).Value = Sheets(« Facture »).Range(« D7 »).Value
Sheets(« Historique_factures »).Range(« C » & ligne).Value = Sheets(« Facture »).Range(« C12 »).Value
Sheets(« Historique_factures »).Range(« D » & ligne).Value = Sheets(« Facture »).Range(« C13 »).Value
Sheets(« Historique_factures »).Range(« E » & ligne).Value = Sheets(« Facture »).Range(« C14 »).Value
Sheets(« Historique_factures »).Range(« F » & ligne).Value = Sheets(« Facture »).Range(« D31 »).Value

Sheets(« Facture »).Range(« A20:B26 »).ClearContents
Sheets(« Facture »).Range(« C12:D12 »).ClearContents
Sheets(« Facture »).Range(« D6 »).Value = Sheets(« Facture »).Range(« D6 »).Value + 1
Sheets(« Facture »).Range(« C29 »).ClearContents
Sheets(« Facture »).Range(« D33 »).ClearContents

(Sachant que si j’ajoute ligne =Sheets(« Historique_factures »). Range(« A2 »).End(xlDown).Row + 1 comme dans la video, j’ai « ######## » qui apparait à la place du numéro de facture)

Merci beaucoup

Bonjour,
Il serait plus simple de placer ton classeur pour voir où ça cloche :wink:

Bonjour
Faire un diagnostique en l’absence du malade mission presque impossible
Si la facture n’est pas restitué sur la bonne ligne il faut incriminer l’instruction qui la détermine celle-ci :

ligne = Range(« A2 »).End(xlDown).Row + 1

fais un essai en mettant pour la ligne 2 à utiliser ceci :

ligne = 2

pour une autre ligne

ligne = autre ligne

Ainsi de confirmer cette origine dans le dysfonctionnement

Mais pour rétablir un fonctionnement correct de cette partie de code il nous faut impérativement le patient pour l’ausculter

Un fichier sans donnée confidentiel sera le bienvenu

Ah mais oui… Suis-je bête…
Voici le fichier… :slight_smile:

Edit : FFO, j’ai testé comme tu as dis, en mettant ligne =2 ça met bien sur la ligne 2, idem quand je mets une autre ligne. Du coup j’imagine que le pb vient bien de la ligne = Range(« A2 »).End(xlDown).Row + 1

Re,
Teste le code comme ceci

Sub Archiver()
  Dim ligne As Integer
  
  ligne = Sheets("Historique_factures").Range("A" & Rows.Count).End(xlUp).Row + 1
  
  Sheets("Historique_factures").Range("A" & ligne).Value = Sheets("Facture").Range("D6").Value
  Sheets("Historique_factures").Range("B" & ligne).Value = Sheets("Facture").Range("D7").Value
  Sheets("Historique_factures").Range("C" & ligne).Value = Sheets("Facture").Range("C12").Value
  Sheets("Historique_factures").Range("D" & ligne).Value = Sheets("Facture").Range("C13").Value
  Sheets("Historique_factures").Range("E" & ligne).Value = Sheets("Facture").Range("C14").Value
  Sheets("Historique_factures").Range("F" & ligne).Value = Sheets("Facture").Range("D31").Value
  
  Sheets("Facture").Range("A20:B26").ClearContents
  Sheets("Facture").Range("C12:D12").ClearContents
  Sheets("Facture").Range("D6").Value = Sheets("Facture").Range("D6").Value + 1
  Sheets("Facture").Range("C29").ClearContents
  Sheets("Facture").Range("D33").ClearContents

End Sub
1 « J'aime »

Re,
Et pour être plus propre avec des variables initialisées

Sub Archiver()
  Dim ligne As Integer
  Dim Ws As Worksheet, Wd As Worksheet
  
  Set Ws = Sheets("Facture")
  Set Wd = Sheets("Historique_Factures")
  
  ligne = Wd.Range("A" & Rows.Count).End(xlUp).Row + 1
  
  Wd.Range("A" & ligne).Value = Ws.Range("D6").Value
  Wd.Range("B" & ligne).Value = Ws.Range("D7").Value
  Wd.Range("C" & ligne).Value = Ws.Range("C12").Value
  Wd.Range("D" & ligne).Value = Ws.Range("C13").Value
  Wd.Range("E" & ligne).Value = Ws.Range("C14").Value
  Wd.Range("F" & ligne).Value = Ws.Range("D31").Value
  
  Ws.Range("A20:B26,C12:D12,C29,D33").ClearContents
  Ws.Range("D6").Value = Ws.Range("D6").Value + 1
End Sub
1 « J'aime »

Ouah ! Merci infiniment pour ta réactivité Mimimathy !
Tout marche impeccablement ! :smiley:
J’ai remplacé avec ton dernier code. C’est parfait ! Merci beaucoup !

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.