Microsoft 365 VBA - Erreur 13 "incompatibilité de type"

AlicePrince

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous avec un message d'erreur récurent.
Mais malgré avoir épluché des dizaines et dizaines de conversations à ce sujet, impossible de trouver une solution.

Utilisation du fichier :
Les utilisateurs importent des données d'un logiciel (j'ai laissé un exemple de données dans la "feuil1") et les collent dans la feuille "Import_Ines".
Grâce à la macro appelée via le bouton "Import" de la feuille "Données", les éléments à conserver s'affichent et sont effacés de la feuille "Import_Ines".
Jusqu'ici tout va bien.

La macro appelée via le bouton "Etiquettes" permet de lancer les impressions d'étiquettes, sur une étiqueteuse, en fonction du nombre de colis.
Si jamais vous faites des tests avec le fichier, je vous conseille de sélectionner le "print to PDF" par défaut pour éviter du gâchis de papier.
Et c'est là que l'erreur surgit sur la ligne
Code:
qte = Worksheets("Données").Range("K" & i).Value

VB:
Sub etiq()
    
    'Variables
    Dim R As Long
    Dim qte as Double
    Dim i, j As Integer
            
    R = Worksheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
        
       'Boucle d'impression
       For i = 3 To R
                        
        qte = Worksheets("Données").Range("K" & i).Value
                
         'Boucle autant d'étiquettes que de colis
         For j = 1 To qte
            
             Set OD = Worksheets("Données")
             Set OA = Worksheets("Etiquettes")
                            
             'Attribution des valeurs
             OA.Cells(3, 3).Value = Format(Date, "DD/MM/YYYY") 'Date du jour
             OA.Cells(8, 2).Value = OD.Range("A" & i).Value 'CMR
             OA.Cells(5, 2).Value = OD.Range("F" & i).Value 'Expéditeur
             OA.Cells(6, 2).Value = OD.Range("G" & i).Value 'Destinataire
             OA.Cells(10, 2).Value = OD.Range("H" & i).Value 'Adresse
             OA.Cells(11, 2).Value = OD.Range("I" & i).Value 'Adresse2
             OA.Cells(13, 2).Value = OD.Range("J" & i).Value 'Localite
             OA.Cells(15, 3).Value = OD.Range("C" & i).Value 'Date de livraison
             OA.Cells(17, 2).Value = OD.Range("L" & i).Value 'Poids
             OA.Cells(18, 2).Value = CStr(j & "/" & qte) 'Colis
             OA.Cells(19, 1).Value = OD.Range("Q" & i).Value 'CP2
            
             R = R + 1
            
             'Impression
             Worksheets("Etiquettes").PrintOut
            
         Next j

        Next i
End Sub


Pour moi, l'erreur se situe sur la variable "qte".
J'ai essayé de la déclarer en double, single, integer, long, variant mais rien à faire, j'ai toujours cette incompatibilité qui débarque.
Je ne sais pas si c'est lié au fait que je fasse une conversion en string plus loin dans le code ?

Mais le plus frustrant, c'est que la macro fonctionne malgré l'erreur.
L'impression est bien générée avec tous les éléments au bon endroit.

Je vous remercie d'avance pour votre aide.
 

Pièces jointes

  • Fichier_erreur13.xlsm
    38.7 KB · Affichages: 14

M12

XLDnaute Accro
Bonjour,
Ton problème vient du fait d'avoir recopier les lignes de l'info du jour dans données jusqu'à la ligne 9
ce qui te donne comme dernière ligne dans ta macro la dernière ligne rempli (R) = 9 alors que cela devrait être R=3
J'ai rajouté une macro qui supprime les lignes vides
 

Pièces jointes

  • Fichier_erreur13-V2.xlsm
    40.3 KB · Affichages: 3

AlicePrince

XLDnaute Nouveau
Bonjour,

Pour l'exemple, j'avais simplifié avec un import mais il est possible qu'il y ait plusieurs lignes (jusqu'à 7 max.)
Et normalement, il y a encore d'autres onglets qui viennent récupérer les valeurs de "Données" via des "=Données!A3" par exemple.

Du coup, la suppression des lignes supprime l'erreur 13 mais me créée de nouveaux problèmes 😂

Capture.PNG


En tout cas, merci pour la piste pour R !
Je vais essayée de modifier mon copier/coller de "Data" vers "Données" pour copier uniquement les lignes comportant des données et non toute la plage maximum par défaut.
J'espère que ça réglera mon problème.

Je te tiens au courant !
 

AlicePrince

XLDnaute Nouveau
Hello,

Je vous remercie pour vos suggestions !
J'ai pu résoudre mon problème.
J'étais tellement convaincue que l'erreur venait de ma variable "qte" que je n'aurais jamais cherché du côté de "R". Comme quoi, des fois, on ne pense pas à chercher au bon endroit.

Merci encore.
 

Statistiques des forums

Discussions
312 108
Messages
2 085 371
Membres
102 876
dernier inscrit
BouteilleMan