[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
A voir également:
- [EXCEL] Comparaison cellules
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Excel additionner plusieurs cellules - Guide
- Word et excel gratuit - Guide
- Fusionner deux cellules excel - Guide
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.
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...
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 ?
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
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
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.
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.
En fait j'avais mal orthographié une instruction...
Merci encore,
Sandrillon