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

Résolu/Fermé
zay19 Messages postés 5 Date d'inscription dimanche 17 mai 2020 Statut Membre Dernière intervention 17 mai 2020 - Modifié le 17 mai 2020 à 10:48
Le Pingou Messages postés 12040 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 - 17 mai 2020 à 11:37
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 12040 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
17 mai 2020 à 10:46
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 dimanche 17 mai 2020 Statut Membre Dernière intervention 17 mai 2020
17 mai 2020 à 10:50
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 12040 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
17 mai 2020 à 10:52
0
Le Pingou Messages postés 12040 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
17 mai 2020 à 10:53
0

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

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
17 mai 2020 à 10:57
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 dimanche 17 mai 2020 Statut Membre Dernière intervention 17 mai 2020
17 mai 2020 à 11:22
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 dimanche 17 mai 2020 Statut Membre Dernière intervention 17 mai 2020
17 mai 2020 à 11:18
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 dimanche 17 mai 2020 Statut Membre Dernière intervention 17 mai 2020
17 mai 2020 à 11:26
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 12040 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
17 mai 2020 à 11:37
Merci, de rien je passe le poste en résolu!
Salutations.
Le Pingou
0