[EXCEL] Comparaison cellules

Résolu/Fermé
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011 - 16 juin 2005 à 13:41
magpie Messages postés 43 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 8 février 2012 - 17 oct. 2006 à 23:18
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.

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:

7 réponses

purrofixe Messages postés 490 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 12 septembre 2007 94
16 juin 2005 à 15:28
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.
1
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
16 juin 2005 à 15:48
Merci de votre aide !

En fait j'avais mal orthographié une instruction...

Merci encore,

Sandrillon
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 528
16 juin 2005 à 15:41
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...
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
16 juin 2005 à 16:08
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 ?
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 528
16 juin 2005 à 17:21
Peut-être peux-tu tester ta macro sur un échantillon, avant de la lancer en réel. Sur une dizaine de lignes tu verras si tu boucles.
0
magpie Messages postés 43 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 8 février 2012 14
17 oct. 2006 à 15:32
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
0

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

Posez votre question
magpie Messages postés 43 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 8 février 2012 14
17 oct. 2006 à 18:01
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
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
17 oct. 2006 à 18:18
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.
0
magpie Messages postés 43 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 8 février 2012 14
17 oct. 2006 à 23:12
ok merci por cette reponse.

Par contre "fonction nqtive " là je cale un peu pourrais tu expliquer?

merci
0
magpie Messages postés 43 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 8 février 2012 14
17 oct. 2006 à 23:18
ah ok j'ai compris je viens d'essayer.
Donc pas besoin de blabla ca fonctionne tout seul avec =[SQRT(2)]

Merci.
0
sandrill0n Messages postés 79 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 22 octobre 2011
16 juin 2005 à 15:17
J'ai ça comme message d'erreur

"Run-time error '438'
Object doesn't support this property or method"
-1