Erreur d'exécution 13 incompatibilité de type

maywen Messages postés 5 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007 - 22 janv. 2007 à 10:16
 Manu - 5 nov. 2018 à 10:00
Bonjour,

VBA s'obstine à me dire "erreur d'exécution 13 incompatibilité de type" lorsque j'exécute ma macro et je ne comprend pas pourquoi... (je ne comprend pas ce qu'il veut dire non plus d'ailleurs).

Le programme suivant doit servir à retrouver deux dates identiques dans une feuille Excel (dans les colonnes B et L) puis, une fois les dates trouvées, soustraire les heures inscrites dans les cases adjacentes (colonnes C et M) et afficher le résultat dans la case de la colonne K située sur la ligne i du départ.
Je fais appel à une fonction "heure" pour ma soustraction.

Sub soleil()
Dim i, j As Integer
For i = 2 To 5305
For j = 2 To 366
If Range("B" & i).Value = Range("L" & j).Value Then
Range("K" & i).Value = heure("C" & i, "M" & j)
End If
Next j
Next i

End Sub

Function heure(time As Date, sun As Date) As Date
heure = time - sun
End Function

au secours, sinon je me tape 5305 soustractions...

merci
A voir également:

14 réponses

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
22 janv. 2007 à 10:36
Salut,

Appelle ta variable time autrement.
Time est un mot réservé.
0
maywen Messages postés 5 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:02
j'ai remplacé time et heure par d'autres noms de variables, mais ça ne marche toujours pas. comprend pas
0
maywen Messages postés 5 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:04
la fonction toute seule fonctionne normalement
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
22 janv. 2007 à 11:08
Sur quelle ligne apparait le msg d'erreur ?
0

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

Posez votre question
maywen Messages postés 5 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:11
Range("K" & i).Value = heure("C" & i, "M" & j)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 janv. 2007 à 11:19
"C" & i et "M" & j sont des chaines de caractères alors que ta fonction attend des variables de types Date, l'erreur vient de là, Type Incompatible

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
maywen Messages postés 5 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 11:27
effectivement, en écrivant Range("K" & i).Value = heure(range("C" & i).Value, range("M" & j).value) ça permet de passer l'étape de l'erreur 13... pas de chance, maintenant j'ai l'erreur 1004 à End function... bon, je vais bosser là dessus!

merci à tous !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 janv. 2007 à 14:05
salut,
je touche pas trop à VBA mais... essaye comme çà :

Sub soleil()
    Dim i As Integer, j As Integer
    
    For i =  2 To 5305
        For j = 2 To 366
            If range("B" & i).Value = range("L" & j).Value Then
                range("K" & i).Value = heure("C" & i, "M" & j)
            End If
        Next j
    Next i
End Sub

Function heure(sCellTime As String, sCellSun As String) As String
    heure = Format$(CDate(CLng(range(sCellTime).Value) -
CLng(range(sCellSun).Value)), "DD/MM/YYYY")
End Function

<small>Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
harris17 Messages postés 4 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 9 février 2007
8 févr. 2007 à 19:18
Bonjour,

Moi aussi j'ai des erreurs d'incompatibilités sur un  macro de traitements de données. J'essaie d'effacer les lignes de données dont je n'ai pas besoin avec le code ci-dessous et je reçois toujours le mêmemessage: "Erreur 13, incompatibilité de type".
Est-ce que quelqu'un pourrait m'aider (je suis débutant)?

Dim X, Minim, Maxim As Double

X = 57642


   For i = 1 To 10
   
    Minim = X - 1
    Maxim = X - 49
    Rows("Minim:Maxim").Select
    Selection.Delete Shift:=xlUp
    X = X - 1
    Next
0
harris17 Messages postés 4 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 9 février 2007
8 févr. 2007 à 19:22
J'ai déjà essayé de changer les types de variables par integer, long, ..mais ça ne marche pas
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2007 à 20:03
harris17
-> pour les questions, on les pose sur son topic (à créer), pas sur le topic des autres.

bref pour une fois... (tu m'étonnes il débarque...)

tes cellules c'est pas un peu C C5 Z54 etc? donc des string, pas un en variant l'autre en double, comme X qui est variant

dim X, Y, Z as long n'as jamais rendu X et Y en long. chaque variable doit être typée
dim X as long, Y as long, Z as long

donc pour toi
dim X as long, Minim as string, Maxim as string
++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
harris17 Messages postés 4 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 9 février 2007
9 févr. 2007 à 09:06
Bonjour,

Désolé d'avoir écrit dans l'autre topic, merci pour ton aide mais ça ne marche pas encore. Comme je l'ai dit, le but c'est de supprimer des lignes dans Excel avec une fréquence de 49 cellules par élimination. J'ai des données brutes sur les 60000 lignes de Excel et je n'ai besoin que d'une certaine partie de ces données brutes.


Si je fixe le nombre de cellules comme suit,
    Rows("141:189").Select
    Selection.Delete Shift:=xlUp
le programme marche bien, mais dès que je fais les boucles comme suit, il me fait erreur 13, incompatibilité de type:

Dim X As Long
Dim Minim As String
Dim Maxim As String


X = 57692


    For i = 1 To 10
   
    Minim = X - 1
    Maxim = X - 49
    Rows("Minim:Maxim").Select
    Selection.Delete Shift:=xlUp
    X = Maxim - 1
    Next


 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
9 févr. 2007 à 12:34
fais un nouveau topic, je ne maitrise pas VBA et peu de monde passe ici (ancien topic)

++

Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
harris17 Messages postés 4 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 9 février 2007
9 févr. 2007 à 13:36
ça y est, le problème a été résolu, il suffisait de faire

Rows (Minim & ":" & Maxim).Select au lieu de
Rows ("Minim:Maxim").select


A +


Bonne prog
0
Merci pour votre reponse
0
Rejoignez-nous