Erreur d'exécution 13 incompatibilité de type

Messages postés
5
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
22 janvier 2007
- 22 janv. 2007 à 10:16 - Dernière réponse :  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
Afficher la suite 

Votre réponse

15 réponses

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

Appelle ta variable time autrement.
Time est un mot réservé.
Commenter la réponse de Dolphin Boy
Messages postés
5
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
22 janvier 2007
22 janv. 2007 à 11:02
0
Merci
j'ai remplacé time et heure par d'autres noms de variables, mais ça ne marche toujours pas. comprend pas
Commenter la réponse de maywen
Messages postés
5
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
22 janvier 2007
22 janv. 2007 à 11:04
0
Merci
la fonction toute seule fonctionne normalement
Commenter la réponse de maywen
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Dernière intervention
17 février 2007
22 janv. 2007 à 11:08
0
Merci
Sur quelle ligne apparait le msg d'erreur ?
Commenter la réponse de Dolphin Boy
Messages postés
5
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
22 janvier 2007
22 janv. 2007 à 11:11
0
Merci
Range("K" & i).Value = heure("C" & i, "M" & j)
Commenter la réponse de maywen
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
22 janv. 2007 à 11:19
0
Merci
"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 #
Commenter la réponse de cs_casy
Messages postés
5
Date d'inscription
lundi 22 janvier 2007
Dernière intervention
22 janvier 2007
22 janv. 2007 à 11:27
0
Merci
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 !
Commenter la réponse de maywen
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
22 janv. 2007 à 14:05
0
Merci
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
Commenter la réponse de PCPT
Messages postés
4
Date d'inscription
jeudi 8 février 2007
Dernière intervention
9 février 2007
8 févr. 2007 à 19:18
0
Merci
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
Commenter la réponse de harris17
Messages postés
4
Date d'inscription
jeudi 8 février 2007
Dernière intervention
9 février 2007
8 févr. 2007 à 19:22
0
Merci
J'ai déjà essayé de changer les types de variables par integer, long, ..mais ça ne marche pas
Commenter la réponse de harris17
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
8 févr. 2007 à 20:03
0
Merci
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
Commenter la réponse de PCPT
Messages postés
4
Date d'inscription
jeudi 8 février 2007
Dernière intervention
9 février 2007
9 févr. 2007 à 09:06
0
Merci
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


 
Commenter la réponse de harris17
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
9 févr. 2007 à 12:34
0
Merci
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
Commenter la réponse de PCPT
Messages postés
4
Date d'inscription
jeudi 8 février 2007
Dernière intervention
9 février 2007
9 févr. 2007 à 13:36
0
Merci
ç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
Commenter la réponse de harris17

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.