[EXCEL] Comparaison cellules
Résolu
sandrill0n
Messages postés
81
Statut
Membre
-
magpie Messages postés 48 Statut Membre -
magpie Messages postés 48 Statut Membre -
Bonjour,
Je souhaite comparer des cellules sur 2 feuilles excel et mettre une donnée dans la 3ème feuille.
J'ai commencé une macro (ci-dessous), mais j'ai une "run-time error" à l'exécution.
Merci,
Sandrillon
Je souhaite comparer des cellules sur 2 feuilles excel et mettre une donnée dans la 3ème feuille.
J'ai commencé une macro (ci-dessous), mais j'ai une "run-time error" à l'exécution.
For cpt_lot = 0 To 15000
'Initialisation des param
Lot = Worksheets("Lot_PC").Cells((2 + cpt_lot), 1).Text
Wafer = Worksheets("Lot_PC").Cells((2 + cpt_lot), 2).Numeric
Lot_present = False
Wafer_present = False
rowsearch = 2
'Le Lot est présent dans la feuille Yield ?
While (VarType(Worksheets("Yield_Probe").Cell(rowsearch, 1)) <> 0 And VarType(Worksheets("Yield_Probe").Cell(rowsearch, 3)) <> 0)
If ((Worksheets("Yield_Probe").Cells(rowsearch, 1).Value = Lot) And (Worksheets("Yield_Probe").Cells(rowsearch, 3).Value = Wafer)) Then
Lot_present = True
Wafer_present = True
End If
rowsearch = rowsearch + 1
Wend
rowyield = 2
While (VarType(Worksheets("Yield_Probe").Cell(rowyield, 1)) <> 0 And VarType(Worksheets("Yield_Probe").Cell(rowyield, 3)) <> 0)
If ((Worksheets("Yield_Probe").Cells(rowyield, 1).Value = Lot) And (Worksheets("Yield_Probe").Cells(rowyield, 3).Value = Wafer)) Then
yield = Worksheets("Yield_Probe").Cells(rowyield, 7).Value
End If
rowyield = rowyield + 1
Wend
If ((Lot_present = True) And (Wafer_present = True)) Then
Worksheets("Lot_PC_Yield").Cells(rowsearch, 8) = yield
End If
Next cpt_lot
Merci,
Sandrillon
7 réponses
-
Bonjour sandrillon,
Essayer de faire un traçage de votre macro (exécution pas à pas), cela vous permettra de voir à quelle ligne d'instruction le problème survient.
Bonne chance. -
Bonjour Sandrillon,
J'obtiens ton erreur 438 avec cette ligne-là :
Wafer = Worksheets("Lot_PC").Cells((2 + cpt_lot), 2).Numeric
Numeric ne s'applique pas tel quel sur une cellule.
Si tu veux savoir si le contenu d'une cellule est numérique, fais :
If IsNumeric(<la valeur de ta cellule>) then... -
Heu par contre je crois que j'ai fais une boucle sans fin....
Je lui ai dit de compter jusqu'à 15000.
Dans la feuille 1 (référence) il y a 7000 lignes à scruter
Dans la feuille 2 (à comparer) il y a 13000 lignes à scruter
Ca prend longtemps à votre avis ? -
hello
j'ai une erreur 438 sur cette ligne ci :
cnt = cnt + Application.WorksheetFunction.Abs(moy - val)
et l'erreur est placee uniquement sur ABS cense donner la valeur absolue. Le reste de la formule fonctionnant avec la fonction somme par exemple.
Une idee ?
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bon alors je ne comprend pas, je suis sur un PC anglais, et dans l'HELP liste des fonctions VBA n'apparait pas Abs ni Sqr...
quelqu'un aurai des infos?
merci -
Bonsoir,
en fait, ABS et SQR existent mais pas en Worksheetfunction.
ce sont des fonctions VBA natives
cordialement
PS : en feuille de calcul, c'est SQRT, donc en VBA tu peux écrire =[SQRT(2)] ou =SQR(2) pour obtenir la racine carrée de 2. la différence est dans les crochets qui font l'équivalent d'un Evaluate.
Ceci dit, utilise les fonctions VBA natives.
-
J'ai ça comme message d'erreur
"Run-time error '438'
Object doesn't support this property or method"