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

Résolu
zay19 Messages postés 5 Statut Membre -  
Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Contrôler que la valeur dans dans la dernière ligne (Range("C6") soit numérique...!
    0
  2. zay19 Messages postés 5 Statut Membre
     
    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
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. zay19 Messages postés 5 Statut Membre
       
      Désolée, il me met pareil la même erreur sur la dernière ligne.
      0
  5. zay19 Messages postés 5 Statut Membre
     
    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
  6. zay19 Messages postés 5 Statut Membre
     
    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. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
       
      Merci, de rien je passe le poste en résolu!
      Salutations.
      Le Pingou
      0