Problème macro VBA

Résolu
Bonjour,

Je suis entrain de faire un modèle de facture sur Excel et j'ai créer une macro qui permet de mettre la facture à zéro. j'aimerai également que cette macro permette la conservation d'un historique de facture. J'ai réussi pour l'instant mais le problème c'est que mon historique de facture est présenté sous forme de tableau et l'historique se colle toujours dans la première ligne.

Sous VBA, ma macro se présente comme cela :

ActiveWindow.SmallScroll Down:=18
Range("A50:K50").Select
Selection.Copy
Sheets("Historique de factures").Select
Range("A4").Select CETTE CELLULE DOIT SE MODIFIER A CHAQUE ENREGISTREMENT
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Facture automatisée").Select
Range("F53").Select
ActiveWindow.SmallScroll Down:=-15
Range("J9:K9").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A18:B29").Select
Selection.ClearContents
Range("E18:E29").Select
Selection.ClearContents
Range("F31").Select
Selection.ClearContents
Range("F33").Select
Selection.ClearContents
Range("J34").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=6
Range("G37").Select
Selection.ClearContents
Range("C14").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-18
End Sub

Pourriez vous m'aider svp.
Merci d'avance

2 réponses

  1. Contributeur
    Bonjour Soph

    macro légèrement simplifiée, essaies
    au déclenchement de la macro tu dois être sur la feuille "facture automatisée"
    Sub archiver()
    
    With Sheets("Historique de factures")
    ligvid = .Range("A65536").End(xlUp).Row + 1
    .Range(Cells(ligvid, 1), Cells(ligvid, 11)).Value = Sheets("Facture automatisée").Range("A50:K50").Value
    End With
    
    
    plage = Union(Range("F53"), Range("J9:K9"), Range("A18:B29"), Range("E18:E29"), Range("F31"), _
                                Range("F33"), Range("J34"), Range("G37"), Range("C14")).ClearContents
    
    End Sub
    1. Modérateur
      Bonjour,
      Voici ton code avec quelques modifications :
      Range("A50:K50").Copy    
      With Sheets("Historique de factures")  
      .Range("A65536").End(xlUp).Offset(1, 0).Select    
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _    
      :=False, Transpose:=False    
      End With  
      Range("J9:K9").ClearContents    
      Range("A18:B29").ClearContents    
      Range("E18:E29").ClearContents    
      Range("F31").ClearContents    
      Range("F33").ClearContents    
      Range("J34").ClearContents    
      Range("G37").ClearContents    
      Range("C14").ClearContents    
      End Sub 


      EDIT : je n'ai pas vu la petite erreur avec le "select" du range("A65536"). Ce code fonctionne mieux :
      Range("A50:K50").Copy 
      With Sheets("Historique de factures") 
      .Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 
      End With 
      Range("J9:K9").ClearContents 
      Range("A18:B29").ClearContents 
      Range("E18:E29").ClearContents 
      Range("F31").ClearContents 
      Range("F33").ClearContents 
      Range("J34").ClearContents 
      Range("G37").ClearContents 
      Range("C14").ClearContents


      Cordialement,
      -- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
      1. Merci beaucoup. Ca marche super bien. C'est super :)
      2. Modérateur
        Salut,
        As tu au moins essayé le code de michel_m ci dessus?
        C'est important, lorsque l'on débute de voir, et de tester, toutes sortes de solution...