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 :

Détecter des valeurs différentes de Y pour une même valeur de D


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Détecter des valeurs différentes de Y pour une même valeur de D
    Bonjour à tous,

    Je cherche à réaliser une macro sur des données à préparer avant un import en base de données.
    J'ai un tableau Excel avec n colonnes. La colonne D peut présenter plusieurs fois une même valeur (ex: ARBRE). La colonne Y doit présenter toujours la même valeur pour une valeur de D donnée.

    Quelle macro utiliser pour mettre en évidence des valeurs de Y (colorer les cellules ?) différentes pour une même valeur de D ?

    Ex:

    D … Y
    ARBRE … VERT
    MAISON … BLANC
    ETANG … BLEU
    ROUTE … NOIR
    GRANGE … JAUNE
    ETANG … BLEU
    GRANGE … JAUNE
    GRANGE … VERT
    ETANG … BLEU
    ARBRE … VERT
    MAISON … BLANC

    Merci d'avance pour votre aide !

    Max

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 20
    Points
    20
    Par défaut
    Salut!

    Il y a certainement plus efficace que ça mais ça tourne en tout cas:

    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
    Sub Principal()
     
    Dim mot As String
     
    mot = InputBox("Valeur D")
    Call Test(mot)
     
    End Sub
     
    Sub Test(mot)
     
    Dim i As Integer
    Dim x As String
    Dim y As Boolean
     
    x = ""
    i = 2
    y = False
     
    While Cells(i, 1).Value <> ""
     
        If Cells(i, 1).Value = mot And x = "" Then
     
         x = Cells(i, 2).Value
     
        End If
     
        If Cells(i, 1).Value = mot And Cells(i, 2).Value <> x And x <> "" Then
     
        y = True
     
        End If
     
    i = i + 1
     
    Wend
     
    i = 2
     
    If y = True Then
     
    While Cells(i, 1).Value <> ""
     
        If Cells(i, 1).Value = mot Then
     
            Cells(i, 2).Interior.ColorIndex = 6
     
        End If
     
    i = i + 1
     
    Wend
     
    End If
     
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse rapide Trius :-)

    Cependant ça ne marche pas. J'ai essayé sur les colonnes D et Y : pas de résultat...
    J'ai donc regardé ton code, j'ai un peu de mal à le comprendre (normal je suis un novice) mais j'ai l'impression déjà qu'il travaille en ligne et non en colonnes.

    Je joins un fichier Excel avec ma structure de départ en feuille 1 et le résultat souhaité en feuille 2 (mais je veux que la macro ne travaille que sur la feuille 1 la feuille 2 c'est pour illustrer).

    Merci !
    Fichiers attachés Fichiers attachés

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 20
    Points
    20
    Par défaut
    Il faut adapter le code à tes colonnes

    Je travaillais sur les colonnes 1 et 2 mais toi tu ne travailles pas sur les mêmes!

    Regarde le fichier que je joins et tu devrais comprendre:
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour max76

    Voici ce que je viens de coder, je suis passe par les tableau de mon cote. J'espere que cela t'aideras.

    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
    Sub VerificationValeur()
     
        Dim Donnees()
        Dim FinTableau As Integer
        Dim Ligne As Integer
        Dim NbMots As Integer
     
        FinTableau = Range("D65536").End(xlUp).Row
        NbMots = 1
     
        ReDim Donnees(1 To 3, 1 To NbMots)
     
        For Ligne = 1 To FinTableau
            For i = 1 To NbMots
                If Range("D" & Ligne) = Donnees(1, i) Then
                    If Range("Y" & Ligne) <> Donnees(2, i) Then
                        Donnees(3, i) = True
                        Exit For
                    End If
                End If
            Next i
     
            If i > NbMots Then
                NbMots = NbMots + 1
                ReDim Preserve Donnees(1 To 3, 1 To NbMots)
                Donnees(1, i) = Range("D" & Ligne)
                Donnees(2, i) = Range("Y" & Ligne)
                Donnees(3, i) = False
            End If
        Next
     
        For i = 1 To NbMots
            If Donnees(3, i) Then
                For Ligne = 1 To FinTableau
                    If Range("D" & Ligne) = Donnees(1, i) Then
                        Range("Y" & Ligne).Interior.Color = 65535
                    End If
                Next
            End If
        Next
     
     
    End Sub
    Bonne journée à toi

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta contribution Trius mais le code de Guiiand est juste parfaitement adapté à mon cas.

    Merci Guiiand, c'est du très beau travail !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/09/2013, 13h56
  2. [WebI Xi] Créer des rapports pour dates différentes pour une même requête
    Par MorningMemories dans le forum Débuter
    Réponses: 2
    Dernier message: 22/03/2012, 16h59
  3. Réponses: 8
    Dernier message: 01/04/2011, 11h04
  4. Réponses: 17
    Dernier message: 09/02/2010, 16h22
  5. Réponses: 16
    Dernier message: 10/07/2009, 14h27

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