Erreur d'execution '13' - Incompatibilité de type

Résolu/Fermé
Wilhelm - 28 juin 2015 à 09:48
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 28 juin 2015 à 17:42
Bonjour,

Pour des raisons professionnelles, je me suis collé à VBA pour Excel (version 2003 sur mon ordinateur perso et 2007 pour celui du travail). Le but de la manoeuvre est d'un côté créer des rapports type avec un modèle Excel incluant les macros, et d'un autre, d'avoir un fichier récapitulatif qui fasse la synthèse des dits rapports.

Grâce en grande partie au site CCM, pour le moment, tout se passe relativement bien, mais il y a une erreur que je ne parviens pas à saisir ... voyez la commande suivante :

    heures_cpt_total_enregistrement = Int(24 * cpt_total_enregistrement)
minutes_cpt_total_enregistrement = Int((cpt_total_enregistrement * 24 - heures_cpt_total_enregistrement) * 60)
If minutes_cpt_total_enregistrement < 10 Then minutes_cpt_total_enregistrement = "0" & minutes_cpt_total_enregistrement
total_enregistrement = heures_cpt_total_enregistrement & ":" & minutes_cpt_total_enregistrement

heures_cpt_total_divers = Int(24 * cpt_total_divers)
minutes_cpt_total_divers = Int((cpt_total_divers * 24 - heures_cpt_total_divers) * 60)
If minutes_cpt_total_divers < 10 Then minutes_cpt_total_divers = "0" & minutes_cpt_total_divers
total_divers = heures_cpt_total_divers & ":" & minutes_cpt_total_divers

heures_cpt_total_manoeuvre = Int(24 * cpt_total_manoeuvre)
minutes_cpt_total_manoeuvre = Int((cpt_total_manoeuvre * 24 - heures_cpt_total_manoeuvre) * 60)
If minutes_cpt_total_manoeuvre < 10 Then minutes_cpt_total_manoeuvre = "0" & minutes_cpt_total_manoeuvre
total_manoeuvre = heures_cpt_total_manoeuvre & ":" & minutes_cpt_total_manoeuvre




Les deux premiers groupes se passent très bien, mais pas celui qui commence par "heures_cpt_total_manoeuvre", qui m'affiche une erreur de type 13

Pitié, aidez moi :)
A voir également:

1 réponse

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
28 juin 2015 à 09:54
Bonjour,

La pitié ne suffira pas, il faut ton fichier. Et tu ne dis même pas la ligne exacte.
Le plus souvent ça correspond à une donnée attendue numérique qui est en texte.

cjoint.com pour joindre un fichier.

eric
0
Wilhelm_Hort Messages postés 17 Date d'inscription dimanche 28 juin 2015 Statut Membre Dernière intervention 31 août 2015
Modifié par Wilhelm_Hort le 28/06/2015 à 10:07
Voilà le char d'assaut ;)

http://www.cjoint.com/c/EFCigx3e8WA

C'est dans l'Userform "Production"
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 28/06/2015 à 10:36
Sans même tester quoique ce soit tes données dans Production!H:I son en texte. Idem dans les autres feuilles.
Une donnée texte est alignée à gauche, une donnée numérique est alignée à droite.

Si ton séparateur décimal est le "." faire remplacer: . par: ,
Si c'est la , :
- copier une cellule vide
- sélectionner la plage
- collage spécial addition
Converti et regarde ce que ça donne.

Voir aussi tes données en L:M, là je n'ai pas de solution miracle. Soit à la main, soit envisager un conversion via vba si tu t'en sers.
Pour les dates remettre le format d'affichage voulu après conversion.

eric
0
Wilhelm_Hort Messages postés 17 Date d'inscription dimanche 28 juin 2015 Statut Membre Dernière intervention 31 août 2015
28 juin 2015 à 10:32
Je fais ça de suite, le temps de le faire directement en VBA
0
Wilhelm_Hort Messages postés 17 Date d'inscription dimanche 28 juin 2015 Statut Membre Dernière intervention 31 août 2015
28 juin 2015 à 11:10
Donc, avec la commande suivante, j'ai pu faire ce que tu m'as suggéré pour les colonnes H à J :

    'Conversion en format nombre des colonnes H, I et J'
Range("Z1").Copy
Range(Cells(1, 8), Cells(Cells(Rows.Count, "X").End(xlUp).Row, 10)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply


Les données L:M et les dates sont au bon affichage, pas de problème de traitement.

Cependant le problème 13 est toujours valable ... une variable a-t-elle une longueur de nom maximale ?
0
Wilhelm_Hort Messages postés 17 Date d'inscription dimanche 28 juin 2015 Statut Membre Dernière intervention 31 août 2015
28 juin 2015 à 12:23
Rectification, la formule que j'avais mis ne fonctionnait pas, mais la solution est arrivée !

Je la mets pour ceux qui veulent en profiter

    'Conversion en format nombre des colonnes H, I et J'
Dim nblignes As Variant
nblignes = Application.WorksheetFunction.CountA(Range("$A:$A"))
Range("H1", "M" & nblignes).Select
For Each c In Selection
c.Value = Val(Replace(c.Text, ",", "."))
Next

'Conversion en format date de la colonne O'
Range("O1", "O" & nblignes).Select
For Each c In Selection
c.Value = DateValue(c.Value)
Next c
0