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

Résolu
zay19 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 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
A voir également:

7 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Contrôler que la valeur dans dans la dernière ligne (Range("C6") soit numérique...!
0
zay19 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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