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 :

Modification d'un code pour rechercher sur plusieurs colonnes au lieu d'une [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut Modification d'un code pour rechercher sur plusieurs colonnes au lieu d'une
    Bonjour,

    Je me sers actuellement du code suivant pour faire des recherches sur mon fichier :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    'Si la cellule modifié est B2
    If Target.Address = "$B$2" Then
        'Les données seront copiées à partir de la ligne 8 de la feuille Consultation
        Range("A8").CurrentRegion.Clear
        'Si la cellule B2 est non vide
        If Target.Value <> "" Then
            With Sheets("Base BE")
                'On enlève l'éventuel filtre automatique
                .AutoFilterMode = False
                'la ligne de la dernière cellule remplie de la colonne A de feuille Base
                LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
                'On filtre sur la colonne G de la feuille base be, en prenant comme critère la valeur de B2 (Target)
                .Range("G1:G" & LastLig).AutoFilter Field:=1, Criteria1:=Target.Value
                'On copie les lignes issues du filtre auto (sans la ligne des titres)
                If .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                    .Range("A2:A" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Copy Range("A8")
                End If
                'On enlève notre filtre automatique
                .AutoFilterMode = False
            End With
        End If
    End If
    End Sub
    Je voudrais modifier ce code pour pouvoir rechercher la valeur en B2 sur les colonnes allant de G à CP.

    Est ce que quelqu'un peut m'aider ? Merci 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
    Par défaut
    Bonjour chipster008,

    Essaie avec ça

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim LastLig As Long
        Dim Cptr As Long
        Application.ScreenUpdating = False
        'Si la cellule modifié est B2
        If Target.Address = "$B$2" Then
            'Les données seront copiées à partir de la ligne 8 de la feuille Consultation
            Range("A8").CurrentRegion.Clear
            'Si la cellule B2 est non vide
            If Range("$B$2") <> "" Then
                With Sheets("Base BE")
                    'On enlève l'éventuel filtre automatique
                    .AutoFilterMode = False
                    'On recherche la dernier ligne de la colonne G
                    LastLig = .Cells(.Rows.Count, "G").End(xlUp).Row
                    'On recherche si une cellule contient la valeur de B2
                    For i = 1 To LastLig
                        Set c = .Range("G" & i, "CP" & i).Find(Range("$B$2"), LookIn:=xlValues)
                        If Not c Is Nothing Then
                            'On copie la ligne
                            Cptr = Cptr + 1
                            .Range("A" & CStr(c.Row)).EntireRow.Copy Range("A" & Cptr + 7)
                        End If
                    Next i
                End With
            End If
        End If
    End Sub
    Cordialement.

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

Discussions similaires

  1. [WD16] Recherche sur plusieurs colonnes d'une table
    Par WDKyle dans le forum WinDev
    Réponses: 2
    Dernier message: 04/06/2012, 14h17
  2. code pour afficher sur listview en dao
    Par sanfour_walhan dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/12/2006, 22h22
  3. [VBA-E] Recherche sur plusieurs colonnes ?
    Par Kokito dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2006, 14h27
  4. [MySQL] Recherche sur plusieurs tables
    Par hubidev dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/03/2006, 11h42
  5. Réponses: 2
    Dernier message: 30/11/2004, 10h42

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