comparer deux cellules de deux feuilles différentes.

G

Guest

Invité
Bonjour tout le monde,
Je suis débutant en vba (cela fait 2 semaine :??:), donc mon problème est le suivant : J'ai deux feuille "Sukhna" et "Max length", dans les deux feuilles j'ai deux colonne, respectivement "TAG number" et "Column", sauf que dans la deuxieme feuille, j'ai une 2ème colonne "Max length", dans "column" on une cellule "TAG number" et avec 30 dans son "Max length".
Cette macro doit permettre de parcourir la colonne "TAG number" de la feuille "Sukhna", et ensuite comparer la taille de contenu de la première ligne avec le "max length" qui lui correspond dans la colonne "Max length" dans la feuille "Max legnth", si inférieur il passe a la cellule suivante.
J’espère que c'est bien clair pour vous.
Le code va se ressembler à ça je pense:
Code:
For Each CurCell In Range("A3:CP3")
    If CurCell.Value = "TAG number" Then
        'cln to represent the column where we find "TAG number"
        cln = Left$(CurCell.Address(0, 0), (CurCell.Column < 27) + 2)
        'Selection of the column "TAG number"
        plage1 = Range(cln & "5" & ":" & cln & "15000").Select
        'Parcourir la colonne TAG number
        For Each rCell In Selection
            'parcourir la colonne "Column" de la feuille "Max length"
            For Each cel In Worksheets("Max length").Range("A2", [A65000].End(xlUp))
                    If cel.value = "TAG number" Then
                              if len(rCell.value)>cel.offset(0,1) then
                                       rCell.select
                                       rCell.Interior.ColorIndex=3
                                       MsgBox "Error Length in cell " & rCell.address
                              End If
                    End If
            Next
        Next
    End If
Next
Si vous avez une idée n'hésitez pas.
Merci d'avance
 

zeb

Modérateur
Plop,
Ohlala !!!!
C'est du grand n'importe quoi.
Tu as bien fait de publier ton code, on va corriger ça, pour ton plus grand bien.

Tu veux lire dans la feuille "Sukhna", mais il faut le préciser.
Arrête de former des adresses avec des chaînes de caractères ! Utilise Cells().
Arrête de faire des sélections inutiles.


Code:
Dim celSukhna As Range
Dim celMaxLen As Range
Dim wshSukhna As Worksheet
Dim wshMaxLen As Worksheet

Dim colColumn As Range
Dim rCell     As Range

Set wshSukhna = Worksheet("Sukhna")
Set wshMaxLen = Worksheet("Max Lenght")

For Each celSukhna In wshSukhna.Range("A3:CP3")
    If celSukhna.Value = "TAG number" Then


        Set colColumn = wshSukhna.Range(wshSukhna.Cells(5, celSukhna.Column), _
                                     wshSukhna.Cells(15000, celSukhna.Column))
        ' -- autre façon de faire :
        Set colColumn = Intersect(Worksheet("Sukhna").Range("5:15000"), _
                                  celSukhna.EntireColumn)
        
        For Each rCell In colColumn
            For Each celMaxLen In wshMaxLen.Range("A2", [A65000].End(xlUp))
            	If celMaxLen.value = "TAG number" Then
                	If len(rCell.value) > celMaxLen.Offset(0,1).value then
                    	rCell.select
                        rCell.Interior.ColorIndex = 3
                        MsgBox "Error Length in cell " & rCell.address
                    End If
                End If
            Next
        Next
    End If
Next


Bon, j'ai récrit ton bout de code.
Mais en fait, quel est la question ?

Réexplique ton cas, plus synthétiquement.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 135
Messages
6 718 091
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut