[EXCEL] Comparaison cellules

Résolu
sandrill0n Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
magpie Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -
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

7 réponses

purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   94
 
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   Statut Membre Dernière intervention  
 
Merci de votre aide !

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

Merci encore,

Sandrillon
0
Armojax Messages postés 1860 Date d'inscription   Statut Membre Dernière intervention   1 528
 
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   Statut Membre Dernière intervention  
 
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 1860 Date d'inscription   Statut Membre Dernière intervention   1 528
 
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   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention   859
 
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   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention  
 
J'ai ça comme message d'erreur

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