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 :

Fonction qui recherche valeur d'une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Fonction qui recherche valeur d'une colonne
    Bonjour,

    Je cherche une fonction en vba qui me recherche une valeur dans une colonne et si elle n'existe pas colorier la ligne en vert et si elle existe passer a la ligne suivante.

    Je me explique:
    Je genere un fichier toutes les semaines avec un colonne appelle "date de signature" place dans la colonne C a partir de la ligne 4.

    Toutes les semaines je dois reprendre le dernier fichier genere et colorier en vert les nouvelles lignes avec "date de signature"

    je dois le faire sur deux ongles "MG" avec 1500 lignes et "SPE" avec 1000 lignes

    Voila et je recherche une fonction qui me le face automatiquement.

    Je espéré avoir été clair avec mon problème.

    Je me excuse pour on orthographe je ne suis pas d'origine française

    Je vous remercie d'avance!

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Voici une procédure qui recherche le texte "date de signature" dans la colonne C, à partir de la ligne 4.
    Si le texte est trouvé, la ligne est coloriée en vert et ainsi de suite jusqu’à la dernière ligne.
    L’opération est réalisée sur les deux onglets "MG" et "SPE".
    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
    Option Explicit
    Sub Test()
    Dim Ws As Worksheet
    Dim DerLig As Long
    Dim c As Range
    Dim firstAddress As String
        For Each Ws In Worksheets
            If Ws.Name = "MG" Or Ws.Name = "SPE" Then
                DerLig = Ws.Range("C" & Ws.Rows.Count).End(xlUp).Row
                With Ws.Range("C4:C" & DerLig)
                    Set c = .Find("date de signature", LookIn:=xlValues)
                    If Not c Is Nothing Then
                        firstAddress = c.Address
                        Do
                            c.EntireRow.Interior.ColorIndex = 10
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> firstAddress
                    End If
                    Set c = Nothing
                End With
            End If
        Next Ws
        Set Ws = Nothing
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci gFZT82 pour votre réponse.

    Enfaite j'ai du mal me expliquer, j'ai 4 ongles MG, SPE, OLD_MG, OLD_SPE. Dans les ongles OLD sont situes les résultat de la semaine dernière, donc il faut comparer les nouveaux résultats avec les anciens pour souligner en vert les nouvelles "date de signature" donc celles qui n’était pas la semaine d'avant.

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Si la structure de tes onglets est identique, tu dois pouvoir comparer ligne à ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("MG").Range("C" & i) = Worksheets("OLD_MG").Range("C" & i) Then

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    sa ne m'aide guerre plus ! Merci pour votre temps passe je vais voir comme je peut me débrouiller.

    Merci bonne soirée.

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Voici un code qui illustre ce que je te disais dans mon post précédent.
    Ce code ne fonctionnera qu’avec des onglets de structure identique car le contrôle est effectué ligne à ligne.
    Comprends bien que tu es le seul à savoir comment est structuré ton fichier.
    J’espère que cela t’aidera quand même.
    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
    Option Explicit
    Sub Test()
    Dim Ws1 As Worksheet, Ws2 As Worksheet
    Dim DerLig As Long, i As Long, j As Long
    Dim Onglet1, Onglet2
        Onglet1 = Array("MG", "SPE")
        Onglet2 = Array("OLD_MG", "OLD_SPE")
        For i = 0 To 1
            Set Ws1 = Worksheets(Onglet1(i))
            Set Ws2 = Worksheets(Onglet2(i))
            DerLig = Ws1.Range("C" & Ws1.Rows.Count).End(xlUp).Row
            For j = 4 To DerLig
                If Ws1.Range("C" & j) = Ws2.Range("C" & j) Then
                    Ws1.Range("C" & j).Interior.ColorIndex = 4
                End If
            Next j
            Set Ws1 = Nothing
            Set Ws2 = Nothing
        Next i
    End Sub
    Cordialement.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    re, je commence par me excuser, je suis désole de m'avoir emporter, je comprend effectivement que aider quelqu’un sans tout savoir n'est pas évident !

    Pour expliquer plus concrètement :

    Je fais un export d'une basse de donnes en .csv ce fichier comporte 24 colonnes et 9000 ligne, en tout j'ai 18 régions.

    Dans ces 18 régions il y a des MG (médecin généraliste) et des SPE (médecin spécialiste) donc a partir de la je dispatche toutes ces data dans 36 ongles, avec la condition "date de signature" remplie c'est a dire si la date de signature n'est pas remplie je saute la ligne.

    2 ongles par régions (MG et SPE) donc j'ai MGreg1, SPEreg1, MGreg2, SPEreg2, MGreg3, SPEreg3, etc...
    qui ont que les médecin avec la "date de signature" remplie

    donc une fois ces data distribue dans leur région correspondante je doit les comparer avec les data de la semaine dernière en sachant que si la semaine dernière il y avait 10 "date de signature" cette semaine il peut avoir 15 "date de signature" donc ces 5 nouveaux médecin avec la "date de signature" remplie leur ligne doit être en vert.

    voila pour la problématique!

    Au debout j'avais pence de faire 18 programmes 1 par région et a chaque fois comparer celui de la semaine dernière avec le nouveau et mettre les nouveaux médecins avec "date de signature" remplie en vert.... vraiment trop compliquer

    Je pensais aussi garder l'export de la semaine dernière et le comparer avec l'export de la nouvelle semaine mettre les nouvelles date de signature en vert et ensuite dispatcher dans les régions.... c'est une possibilité plus simple que la précédente.

    Mais mon grand soucis c'est que je ne sais pas comment me prendre pour faire la condition pour mettre en vert les nouvelles dates de signature c'est a dire celles qui sont dans le nouveau export et non dans l'ancien et par la suite les dispatcher dans leur régions sans perdre la couleur verte!

    quesque je peut vous dire en plus....

    le chemins sont:

    c:\etude\template ->ma macro est loge la
    c:\etude\template\dataold ->l'ancien export est la
    c:\etude\résultat\date-du-jour ->les résultats seront enregistre la
    c:\etude\export planifié -> le export du jour est la

Discussions similaires

  1. Générer un onglet en fonction de la valeur d'une colonne d'une liste
    Par kreutzberg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/05/2012, 09h09
  2. Réponses: 0
    Dernier message: 09/07/2011, 21h52
  3. Réponses: 2
    Dernier message: 03/02/2011, 11h54
  4. Recherche valeurs d'une colonne
    Par Joachim49 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/12/2007, 13h59
  5. [mysql 5.0] insert en fonction de la valeur d une colonne
    Par jota5450 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/08/2007, 10h15

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