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

Résolu
Wilhelm -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Membre Dernière intervention  
 
Voilà le char d'assaut ;)

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

C'est dans l'Userform "Production"
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Membre Dernière intervention  
 
Je fais ça de suite, le temps de le faire directement en VBA
0
Wilhelm_Hort Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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