IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Deselectionner une cellule dans une plage de données


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Deselectionner une cellule dans une plage de données
    Bonjour,

    J'ai visité bcp de forum et je n'ai tjs pas trouvé réponses à ma question. Peut-etre qlq un pourra m'aider.


    J'ai une plage de données principale suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage de donnée = Range("E4:E27,F4:F17,G4:G38,H4:H19").Select
    Le but est de pouvoir utiliser cette plage de données sans certaines cellules. J'aimerai pouvoir faire varier le contenu de cette plage de données. Par exemple, une fois je ne voudrais que Range("E4:E27,F4:F17,G4:G38) (C'est-à-dire sans H4:H19), une autre fois Range("E4:E27,G4:G38,H4:H19") (C'est-à-dire sans F4:F17)

    J'ai essayé ce genre de code, mais visiblement ca ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Plagededonnée = Range("E4:E27,F4:F17,G4:G38,H4:H19").Select
        With Range("F4:F17") Is Nothing
        End With
    Le but ultime pour ma macroest donc de pouvoir en faire une boucle, plutot que de devoir me faire 4 fois le meme code. Je veux éviter de rendre une macro trop lourde.

    merci pour votre aide

    Marc

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour...



    Il me semble que tu cherches midi à 14 heures. Il te suffirait de recréer la chaine de caractères contenant la plage voulue.

    Ceci étant dit, si l'on considère que l'adresse de départ est générique, tu peux utiliser un code tel que celui donné ci-après pour "sortir" la plage non voulue. Il faut considérer que ce que tu supprimes peut se trouver en début, en milieu ou en fin de chaine d'adresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Const AdressePlageGenerique As String = "E4:E27,F4:F17,G4:G38,H4:H19"
     
    Sub Test()
      Dim AdressePlageVoulue As String
      Dim AdressePlageExclue As String
     
      AdressePlageExclue = "E4:E27"
      AdressePlageVoulue = Replace(AdressePlageGenerique, AdressePlageExclue, "")
      If Right(AdressePlageVoulue, 1) = "," Then AdressePlageVoulue = Left(AdressePlageVoulue, Len(AdressePlageVoulue) - 1)
      If Left(AdressePlageVoulue, 1) = "," Then AdressePlageVoulue = Right(AdressePlageVoulue, Len(AdressePlageVoulue) - 1)
      AdressePlageVoulue = Replace(AdressePlageVoulue, ",,", ",")
    End Sub

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    C'est vrai que ton besoin n'est pas très clair.

    Une plage peut être constituée de plusieurs zones, comme dans ton cas. Pour accéder à une zone particulière de la plage, tu peux utiliserSi ton besoin est defaire des sélections diverses à partir de 4 zones, tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Zone1 = ...
    ...
    Set Zone4 = ...
    puis quand tu veux faire une sélection, et par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With application.Union(Zone1,zone3)
    ...
    Cordialement,

    PGZ

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour a vous deux!

    Merci pour votre réponse rapide. Je vous donne ma macro afin de clarifier la situation et de pouvoir mieux expliquer ce que je veux faire.

    Ma macro actuelle est donc la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    'AAAA
    For j = 0 To LastRow1 - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(1)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(1)), NbrCharacters - 2)
     
            If IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(2)), Cells(4 + LastRow2, Col(2))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(3)), Cells(4 + LastRow3, Col(3))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(4)), Cells(4 + LastRow4, Col(4))), 1, False)) Then
                Cells(4 + j, Col(1)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
    Next j
     
    'BBBB
    For j = 0 To LastRow2 - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(2)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(2)), NbrCharacters - 2)
     
            If IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(1)), Cells(4 + LastRow1, Col(1))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(3)), Cells(4 + LastRow3, Col(3))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(4)), Cells(4 + LastRow4, Col(4))), 1, False)) Then
                Cells(4 + j, Col(2)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
    Next j
     
    'CCCC
    For j = 0 To LastRow3 - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(3)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(3)), NbrCharacters - 2)
     
            If IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(2)), Cells(4 + LastRow2, Col(2))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(1)), Cells(4 + LastRow1, Col(1))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(4)), Cells(4 + LastRow4, Col(4))), 1, False)) Then
                Cells(4 + j, Col(3)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
    Next j
     
    'DDDD
    For j = 0 To LastRow4 - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(4)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(4)), NbrCharacters - 2)
     
            If IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(2)), Cells(4 + LastRow2, Col(2))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(3)), Cells(4 + LastRow3, Col(3))), 1, False)) And IsError(Application.VLookup((CellToLook & "*"), Range(Cells(4, Col(1)), Cells(4 + LastRow1, Col(1))), 1, False)) Then
                Cells(4 + j, Col(4)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
    Comme vous pouvez le voir, elle est assez longue et répétitve. Ce que je cherche à faire, c'est d'écrire une seule fois le code et de faire une boucle.

    Pour mettre des mots sur ce code, j'ai une plage de données qui vont de la colonne 1 à la 4 (préalablement définies). Ce que je fais, c'est que je recherche les valeurs dans la colonne 1 par exemple et je veux voir si elles sont présentes dans les colonnes 2,3,4. Ensuite, meme opération pour les valeurs dans la colonne 2 pour voir si elles sont présentes dans les colonnes 1,3,4.

    J'aimerais arriver à un code du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    For i = 1 To 4
    For j = 0 To LastRow1 - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(i)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(i)), NbrCharacters - 2)
     
            If IsError(Application.VLookup((CellToLook & "*"), SearchArea - Col(i), 1, False)) Then
                Cells(4 + j, Col(i)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
    Next j
    Next i
    Le problème, c'est que je sais pas comment pour voir modéliser le truc SearchArea - Col(i), c'est-à-dire que ca n'inclue pas les données de la colonne i de ma plage de données.

    J'espère que c'est un peu plus clair maintenant et que vous avez une solution à me proposer

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Avant de le raccourcir, tu es sûr que ton code fonctionne?
    Ce que je fais, c'est que je recherche les valeurs dans la colonne 1 par exemple et je veux voir si elles sont présentes dans les colonnes 2,3,4. Ensuite, meme opération pour les valeurs dans la colonne 2 pour voir si elles sont présentes dans les colonnes 1,3,4.
    La fonction de feuille vlookup recherche dans une table (je ne suis pas sûr que la plage puisse être discontinue) et seulement dans sa colonne de gauche...

    Sinon pour constituer une plage à partir de 4 colonnes dans une boucle de 1 à 4 qui exclut la colonne (i), ma proposition d'hier tient toujours.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub toto()
    Dim maFeuille As Excel.Worksheet
    Dim zone1 As Excel.Range
    Dim zone2 As Excel.Range
    Dim zone3 As Excel.Range
    Dim zone4 As Excel.Range
    Dim NewRange As Excel.Range
    Dim i As Integer
     
    Set maFeuille = Application.ActiveSheet
     
    Set zone1 = maFeuille.Range("E4:E27")
    Set zone2 = maFeuille.Range("F4:F17")
    Set zone3 = maFeuille.Range("G4:G38")
    Set zone4 = maFeuille.Range("H4:H19")
     
    For i = 1 To 4
        If i = 1 Then
            Set NewRange = Application.Union(zone2, zone3, zone4)
        ElseIf i = 2 Then
            Set NewRange = Application.Union(zone1, zone3, zone4)
        ElseIf i = 3 Then
            Set NewRange = Application.Union(zone1, zone2, zone4)
        ElseIf i = 4 Then
            Set NewRange = Application.Union(zone1, zone2, zone3)
        End If
     
        Debug.Print NewRange.Address
     
    Next i
     
    Set maFeuille = Nothing
    Set zone1 = Nothing
    Set zone2 = Nothing
    Set zone3 = Nothing
    Set zone4 = Nothing
     
    End Sub
    donne pour résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $F$4:$F$17,$G$4:$G$38,$H$4:$H$19
    $E$4:$E$27,$G$4:$G$38,$H$4:$H$19
    $E$4:$E$27,$F$4:$F$17,$H$4:$H$19
    $E$4:$E$27,$F$4:$F$17,$G$4:$G$38
    Cordialement

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    oui mon code fonctionne. D'ailleurs la fonction vlookup fonctionnait car ca allait rechercher que dans une colonne après l'autre. Mais maintenant elle ne fonctionne plus. J'ai donc opté pour la fonction Find

    Je te remercie pour ton code. Ca à l'air d'avancer dans la bonne direction. Cependant, j'ai tjs un message d'erreur. Voilà comment j'ai appliqué ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    Sub toto()
    Dim zone1 As Excel.Range
    Dim zone2 As Excel.Range
    Dim zone3 As Excel.Range
    Dim zone4 As Excel.Range
    Dim NewRange As Excel.Range
    Dim i As Integer
    Dim CellToLookAt As Integer
     
    Set maFeuille = Application.ActiveSheet
     
    Set zone1 = Sheets("Errors").Range("D4:D71")
    Set zone2 = Sheets("Errors").Range("B4:B143")
    Set zone3 = Sheets("Errors").Range("C4:C124")
    Set zone4 = Sheets("Errors").Range("E4:E71")
     
    Col(1) = Sheets("Errors").Range("AAA").Column
    Col(2) = Sheets("Errors").Range("BBB").Column
    Col(3) = Sheets("Errors").Range("CCC").Column
    Col(4) = Sheets("Errors").Range("DDD").Column
     
    LastRow(1) = Range(Range("AAA").Offset(1, 0), Range("AAA").Offset(1, 0).End(xlDown)).Rows.Count
    LastRow(2) = Range(Range("BBB").Offset(1, 0), Range("BBB").Offset(1, 0).End(xlDown)).Rows.Count
    LastRow(3) = Range(Range("CCC").Offset(1, 0), Range("CCC").Offset(1, 0).End(xlDown)).Rows.Count
    LastRow(4) = Range(Range("DDD").Offset(1, 0), Range("DDD").Offset(1, 0).End(xlDown)).Rows.Count
     
    For i = 1 To 4
        If i = 1 Then
            Set NewRange = Application.Union(zone2, zone3, zone4)
        ElseIf i = 2 Then
            Set NewRange = Application.Union(zone1, zone3, zone4)
        ElseIf i = 3 Then
            Set NewRange = Application.Union(zone1, zone2, zone4)
        ElseIf i = 4 Then
            Set NewRange = Application.Union(zone1, zone2, zone3)
        End If
     
        Debug.Print NewRange.Address
     
        For j = 0 To LastRow(i) - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(i)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(i)), NbrCharacters - 2)
     
                If IsError(CellToLookAt = NewRange.Find((CellToLook & "*"))) Then
                Cells(4 + j, Col(i)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
     
            End If
    Next j
     
    Next i
    End Sub
    Seulement, quand la cellule CellToLookAt n'existe dans aucune des colonnes observées, elle devrait se mettre en rouge. Cependant, au lieu de ca, j'ai un mesage d'erreur "Variable object ou variable de bloc With non définie". Et je ne comprends pas d'ou peut venir l'erreur.

    Je te remercie pour ton aide

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Citation Envoyé par markinho04 Voir le message
    Seulement, quand la cellule CellToLookAt n'existe dans aucune des colonnes observées, elle devrait se mettre en rouge...
    CellToLookAt as déclaré comme variable de type entier.
    Il y a aussi CellToLook, qui n'est pas déclaré, pas plus que les tabeaux Col et LastRow

    Conseil : en haut de ton module, écrisPuis dans le menu "Debug" clique sur "compiler".

    Pour voir...

    Cordialement,

    PGZ

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est chose faite. Ca m'a mis en évidence ce qui n'a pas été déclaré. Malheureusment, ca n'a tjs pas résolu mon problème...

    Ce qui devrait se passer, lorsque le cellule CellToLookAt n'est pas dans la plage de données NewRange, elle devrait s'afficher en rouge.

    Lorsque c'est le cas, au lieu de se mettre en rouge, la macro bug avec le meme message d'erreur.

    Et je ne vois vraiment pas d'ou peut provenir l'erreur....

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Hello,

    Je ne comprends toujours pas pourquoi tu parles de "cellule CellToLookat" alors que CellToLookAt est un entier...

    Ceci dit, la méthode Find renvoie un objet Range. Et quand elle ne trouve pas, elle renvoie Nothing.

    Le test devrait donc être plutôt du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If  NewRange.Find(...) Is Nothing then
    Cordialement,

    PGZ

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ca marche! Merci encore pour cette information. Comme t'as pu le constater, je ne suis pas un expert en programmation....

    En tout cas, ma macro fonctionne parfaitement. La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Sub toto()
     
    Dim zone1 As Excel.Range
    Dim zone2 As Excel.Range
    Dim zone3 As Excel.Range
    Dim zone4 As Excel.Range
    Dim NewRange As Excel.Range
    Dim i As Integer
    Dim j As Integer
    Dim CellToLook As String
    Dim NbrCharacters As Integer
     
     
    Set zone1 = Sheets("Errors").Range("D4:D71")
    Set zone2 = Sheets("Errors").Range("B4:B143")
    Set zone3 = Sheets("Errors").Range("C4:C124")
    Set zone4 = Sheets("Errors").Range("E4:E71")
     
    Col(1) = Sheets("Errors").Range("APNO").Column
    Col(2) = Sheets("Errors").Range("APTO").Column
    Col(3) = Sheets("Errors").Range("SLT").Column
    Col(4) = Sheets("Errors").Range("SLN").Column
     
    PortfolioLastRow(1) = Range(Range("APNO").Offset(1, 0), Range("APNO").Offset(1, 0).End(xlDown)).Rows.Count
    PortfolioLastRow(2) = Range(Range("APTO").Offset(1, 0), Range("APTO").Offset(1, 0).End(xlDown)).Rows.Count
    PortfolioLastRow(3) = Range(Range("SLT").Offset(1, 0), Range("SLT").Offset(1, 0).End(xlDown)).Rows.Count
    PortfolioLastRow(4) = Range(Range("SLN").Offset(1, 0), Range("SLN").Offset(1, 0).End(xlDown)).Rows.Count
     
    For i = 1 To 4
        If i = 1 Then
            Set NewRange = Application.Union(zone2, zone3, zone4)
        ElseIf i = 2 Then
            Set NewRange = Application.Union(zone1, zone3, zone4)
        ElseIf i = 3 Then
            Set NewRange = Application.Union(zone1, zone2, zone4)
        ElseIf i = 4 Then
            Set NewRange = Application.Union(zone1, zone2, zone3)
        End If
     
        'Debug.Print NewRange.Address
     
        For j = 0 To PortfolioLastRow(i) - 1
                Sheets("Errors").Activate
                NbrCharacters = Len(Sheets("Errors").Cells(4 + j, Col(i)))
                CellToLook = Left(Sheets("Errors").Cells(4 + j, Col(i)), NbrCharacters - 2)
     
                If NewRange.Find(CellToLook & "*") Is Nothing Then
                Cells(4 + j, Col(i)).Select
                With Selection.Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .Color = 255
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
     
            End If
    Next j
     
    Next i
    End Sub
    Merci encore à toi Pgz ainsi qu'à Pierre. Bonne semaine à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Afficher une image dans une cellule d'une gridview
    Par guigui11 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 10h18
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo