Rechercher : dans
Par :

[EXCEL] Comparaison cellules

Dernière réponse le 17 oct 2006 à 23:18:09 sandrill0n, le 16 jun 2005 à 13:41:51 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [EXCEL] Comparaison cellules » dans :
[Excel] Colorer des cellules sur conditions VoirIl existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées. Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un...
Tableur - Les cellules VoirLa notion de cellule On appelle "cellule" l'intersection entre une ligne (horizontale) et une colonne (verticale) de la feuille de calcul. Ainsi le nom de la ligne combiné au nom de la colonne donne les coordonnées d'une cellule (le terme d'adresse...
Tableur - La sélection des cellules VoirSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a...

1

sandrill0n, le 16 jun 2005 à 15:17:46

J'ai ça comme message d'erreur

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

Répondre à sandrill0n

2

purrofixe, le 16 jun 2005 à 15:28:51
  • +1

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. Amicales salutations
Jean-Pierre

Répondre à purrofixe

4

sandrill0n, le 16 jun 2005 à 15:48:00

Merci de votre aide !

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

Merci encore,

Sandrillon

Répondre à sandrill0n

3

Armojax, le 16 jun 2005 à 15:41:48

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...

Répondre à Armojax

5

sandrill0n, le 16 jun 2005 à 16:08:35

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 ?

Répondre à sandrill0n

6

Armojax, le 16 jun 2005 à 17:21:00

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.

Répondre à Armojax

7

magpie, le 17 oct 2006 à 15:32:33

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

Répondre à magpie

8

magpie, le 17 oct 2006 à 18:01:07

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

Répondre à magpie

9

JvDo, le 17 oct 2006 à 18:18:54

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.

Répondre à JvDo

10

magpie, le 17 oct 2006 à 23:12:23

Ok merci por cette reponse.

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

merci

Répondre à magpie

11

 magpie, le 17 oct 2006 à 23:18:09
  • +1

Ah ok j'ai compris je viens d'essayer.
Donc pas besoin de blabla ca fonctionne tout seul avec =[SQRT(2)]

Merci.

Répondre à magpie
Collection CommentÇaMarche.net