maywen
Messages postés5Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention22 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...
maywen
Messages postés5Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention22 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!
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
harris17
Messages postés4Date d'inscriptionjeudi 8 février 2007StatutMembreDerniè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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
harris17
Messages postés4Date d'inscriptionjeudi 8 février 2007StatutMembreDerniè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