"erreur d’exécution 13 Incompatibilité de Type" dans VBA [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
17 mai 2020
-
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
-
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

Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Bonjour,
Contrôler que la valeur dans dans la dernière ligne (Range("C6") soit numérique...!
Messages postés
5
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
17 mai 2020

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.
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Messages postés
15426
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
23 novembre 2020
1 405
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
Messages postés
5
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
17 mai 2020

Désolée, il me met pareil la même erreur sur la dernière ligne.
Messages postés
5
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
17 mai 2020

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
Messages postés
5
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
17 mai 2020

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
Messages postés
9819
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
15 novembre 2020
1 096
Merci, de rien je passe le poste en résolu!
Salutations.
Le Pingou