"erreur d’exécution 13 Incompatibilité de Type" dans VBA

Résolu
Bonjour à tous,

Je suis toute nouvelle dans la programmation, j'ai eu ce code sur internet que j'ai modifié pour moi. Il a fonctionné très bien pendant quelques semaines et là ça ne fonctionne plus.

J'ai essayé différentes choses mais impossible de trouver.

Mon fichier est un fichier qui permet de faire des factures automatiques et archive dès que je valide (via un bouton archive) sur une autre page du fichier.

Voici mon code:
Sub Archiver()
    ligne = Sheets("Historique_ventes").Range("A2").End(xlDown).Row + 1
    Sheets("Historique_ventes").Range("A" & ligne).Value = Sheets("Facture").Range("C6").Value
    Sheets("Historique_ventes").Range("B" & ligne).Value = Sheets("Facture").Range("C9").Value
    Sheets("Historique_ventes").Range("C" & ligne).Value = Sheets("Facture").Range("E5").Value
    Sheets("Historique_ventes").Range("D" & ligne).Value = Sheets("Facture").Range("C12").Value
    Sheets("Historique_ventes").Range("E" & ligne).Value = Sheets("Facture").Range("G33").Value
    Sheets("Historique_ventes").Range("F" & ligne).Value = Sheets("Facture").Range("E8").Value
    Sheets("Historique_ventes").Range("G" & ligne).Value = Sheets("Facture").Range("G29").Value
    Sheets("Historique_ventes").Range("H" & ligne).Value = Sheets("Facture").Range("G31").Value
    Sheets("Historique_ventes").Range("I" & ligne).Value = Sheets("Facture").Range("D12").Value
    
    Sheets("Facture").Range("D12:D27").ClearContents
    Sheets("Facture").Range("E5:G5").ClearContents
   
    Sheets("Facture").Range("C6").Value = Sheets("Facture").Range("C6").Value + 1
       
          
    End Sub



EDIT : Ajout des balises de code


L'erreur se trouve dans la dernière ligne mais je comprends pas.

Merci infiniment de votre aide.

Zay

7 réponses

  1. Bonjour,
    Contrôler que la valeur dans dans la dernière ligne (Range("C6") soit numérique...!
    0
    1. Merci Le Pingou,

      J'ai une valeur 2020-117 et j'aimerai 2020-118.

      Cela a fonctionné jusqu'à maintenant, je ne vois pas pourquoi ça ne veut plus.
      0
      1. Bonjour a vous deux,

        zay19/
        Faites ce que le_Pingou a ecrit.
        Deux facon de faire:
        _ voir de visu la cellule C6
        ou
        _ quand vous avez l'erreur, click sur ok et passez le curseur souris sur range("C6") de la ligne d'erreur.
        Si valeur est autre qu'un nombre, c'est evident
        Si valeur est un nombre entre double cotes, la faut faire kake chose

        Ci-dessous, code un peu plus mieux bien
        Sub Archiver()
            With Sheets("Historique_ventes")
                ligne = .Range("A2").End(xlDown).Row + 1
                .Range("A" & ligne).Value = Sheets("Facture").Range("C6").Value
                .Range("B" & ligne).Value = Sheets("Facture").Range("C9").Value
                .Range("C" & ligne).Value = Sheets("Facture").Range("E5").Value
                .Range("D" & ligne).Value = Sheets("Facture").Range("C12").Value
                .Range("E" & ligne).Value = Sheets("Facture").Range("G33").Value
                .Range("F" & ligne).Value = Sheets("Facture").Range("E8").Value
                .Range("G" & ligne).Value = Sheets("Facture").Range("G29").Value
                .Range("H" & ligne).Value = Sheets("Facture").Range("G31").Value
                .Range("I" & ligne).Value = Sheets("Facture").Range("D12").Value
            End With
            With Sheets("Facture")
                .Range("D12:D27").ClearContents
                .Range("E5:G5").ClearContents
                .Range("C6").Value = .Range("C6").Value + 1
            End With
        End Sub
        
        0
        1. Désolée, il me met pareil la même erreur sur la dernière ligne.
          0
      2. Je viens d'essayer en modifiant l'intégralité et ça ne fonctionne pas, après c'est la première fois que je programme donc je peux avoir mal compris. Voilà ce que j'ai fait et il me met la même erreur sur la dernière ligne.

        Je vais le code que vous proposez, merci.

        Sub Archiver()
        Dim liste(), ligvide As Long
        With Sheets("Facture")
        liste = Array(.[C6], .[C9], .[E5], .[C12], .[G33], .[E8], .[G29], .[G31], .[D12])
        End With
        With Sheets("Historique_ventes")
        ligvide = .Columns("A").Find("", .Range("A1")).Row
        .Cells(ligvide, "A").Resize(1, UBound(liste) + 1) = liste
        .Activate

        Sheets("Facture").Range("C6").Value = Left(Range("C6"), 5) + Format(CInt(Right(Range("C6"), Len(Range("C6")) - 5)) + 1, "000")
        End With
        End Sub
        0
        1. Merci à tous les deux!!!

          J'ai fait un mélange de vos deux réponses et ça fonctionne.
          Je le mets là au cas ça puisse aider quelqu'un d'autre.

          Sub Archiver()
          With Sheets("Historique_ventes")
          ligne = .Range("A2").End(xlDown).Row + 1
          .Range("A" & ligne).Value = Sheets("Facture").Range("C6").Value
          .Range("B" & ligne).Value = Sheets("Facture").Range("C9").Value
          .Range("C" & ligne).Value = Sheets("Facture").Range("E5").Value
          .Range("D" & ligne).Value = Sheets("Facture").Range("C12").Value
          .Range("E" & ligne).Value = Sheets("Facture").Range("G33").Value
          .Range("F" & ligne).Value = Sheets("Facture").Range("E8").Value
          .Range("G" & ligne).Value = Sheets("Facture").Range("G29").Value
          .Range("H" & ligne).Value = Sheets("Facture").Range("G31").Value
          .Range("I" & ligne).Value = Sheets("Facture").Range("D12").Value
          End With
          With Sheets("Facture")
          .Range("D12:D27").ClearContents
          .Range("E5:G5").ClearContents
          .Range("C6").Value = Left(Range("C6"), 5) + Format(CInt(Right(Range("C6"), Len(Range("C6")) - 5)) + 1, "000")
          End With
          End Sub

          Immense gratitude!

          Très bon dimanche.

          Zay
          0
          1. Merci, de rien je passe le poste en résolu!
            Salutations.
            Le Pingou
            0