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 :

Rechercher une ligne de tableau [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut Rechercher une ligne de tableau
    Bonjour,
    J'ai utilisé une mise en forme conditionnelle =LIGNE(B4)=$B$1 pour mettre en surbrillance une ligne du tableau. Je souhaite maintenant créer une macro qui me permette d'aller directement sur la ligne mise en surbrillance.
    C'est facile lorsqu'on a uniquement 10 ou 15 lignes pour aller directement sur la ligne, mais lorsque le tableau fait 2000 lignes, là c'est moins facile.

    Par contre là je buggue totalement et aucune idée pour créer cette macro. Je pense que cela doit être très simple Auriez-vous la solution pour moi ?



    Je vous remercie pour votre aide


  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Kaytilou Voir le message
    J'ai utilisé une mise en forme conditionnelle =LIGNE(B4)=$B$1 pour mettre en surbrillance une ligne du tableau. Je souhaite maintenant créer une macro qui me permette d'aller directement sur la ligne mise en surbrillance.
    Pourquoi une macro ? Un filtre colonne B sur la valeur de B1 devrait suffire.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 762
    Points : 28 621
    Points
    28 621
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'enregistreur de macros est le meilleur ami du programmeur VBA Excel
    Pour aller à une adresse précise, il faut utiliser la boîte de dialogue Atteindre (Raccourci clavier F5)

    Après avoir enclenché l'enregistreur de macro
    1. Je clique donc sur F5
    2. J'imagine que dans la cellule B1, j'ai comme valeur 50
    3. Sachant que mon tableau structuré commence en cellule A1, la cellule que je dois donc atteindre c'est A51
    4. Je place donc dans la zone de texte Référence, l'adresse A51 et je clique sur OK
    5. J'arrête l'enregistreur et j'obtiens comme ligne de code Application.Goto Reference:="R51C1"


    Il ne me reste plus qu'à adapter le code reçu
    Que dois-je faire en résumé ?
    Atteindre la cellule se trouvant en colonne A du tableau structuré

    L'objet utilisé pour gérer les tableaux structurés est ListObject, imaginons que le tableau soit seul dans la feuille, nous utiliserons donc ListObjects(1)La partie Donnée d'un tableau structuré est DataBodyRange
    Comme l'argument Reference de la méthode GoTo attend une chaine de caractères comme adresse et ce en style R1C1, nous devrons donc utiliser la propriété Address de l'objet Range et en utilisant l'argument ReferenceStyle en lui passant comme valeur la constante xlR1C1

    Et voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim oList As ListObject
      Dim Cell As Range
      Set oList = ActiveSheet.ListObjects(1)
      Set Cell = oList.DataBodyRange.Cells(50, 1)
      Application.Goto Reference:=Cell.Address(ReferenceStyle:=xlR1C1)
    IIl ne reste plus qu'à adapter pour le placer dans la procédure événementielle en n'oubliant pas de remplacer la constante 50 par la référence à la cellule B1

    Voir la discussion Surbrillance d'une ligne du tableau en fonction de la sélection d'une cellule et du numéro de ligne

    Par contre il y a quelque chose qui m'échappe
    Dans cette discussion, la question était
    Surbrillance en fonction de la sélection d'une cellule dans la ligne
    Lorsque je sélectionne une ligne, le numéro s'affiche en cellule B1
    Ce qui a été résolu, donc il n'y a auncune raison d'y aller puisque on l'a sélectionnée ???
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Bonjour [QUOTE=Philippe Tulliez;11475740]
    Merci sincèrement pour votre aide. Je pense que j'ai du mal à m'exprimer car malgré tout le support que vous m'apporter, je buggue encore.
    Voilà exactement ce que je cherche à faire sur un tableau structuré commençant en cellule A6 (avec la ligne d’entête figée). Je ne voulais pas utiliser de UserForm, mais je me dis que cela aurait peut être mieux

    1. Mettre un message (Inbox) pour demander une action
    2. Rechercher le nom d'un agent (j'ai utilisé la colonne concaténée E4 avec nom et prénom) car je ne sais pas créer un code pour aller chercher et dans la colonne Prénom et dans la colonne Nom en même temps. (J'ai mis en début de module le code Option Compare Text afin qu'il n'y ait pas de blocage entre les majuscules et les minuscules)
    3. Recherche dans l'ensemble du tableau la ligne correspondante à ma recherche
    4. Compléter les informations trouvées dans les bonnes colonnes de la ligne 4 (La ligne 4 me sert uniquement pour faire de la recherche car elle est masquée dans mon tableau.)
    5. J'ai ajouté le fait de pouvoir mettre en surbrillance la ligne recherchée (Mise en forme conditionnelle utilisant la fonction =ET($A7<>"";$A7=$A$4)). Jusqu'à la tout fonctionne parfaitement.

    Et c'est là que j'ai fait appel à vos compétences car mon tableau fait plus de 1000 lignes et je voudrais me placer directement sur la ligne en surbrillance, sans avoir à dérouler tout le tableau pour y parvenir. En effet je risque de devoir faire des modifications sur la ligne en question.

    Voici donc le code que j'ai mis en place en reprenant ce que vous m'aviez indiqué dans votre précédente réponse. Mais cela ne fonctionne toujours pas car je dois dérouler tout le tableau pour aller sur la ligne en surbrillance.

    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 RechercherContact()
    On Error Resume Next
        'Bloquer l'écran pour executer la macro
            Application.ScreenUpdating = False
        'Déclaration des variables
            Dim Ligne As Integer
            Dim Nom As String
        'Message box pour demander une action
                Nom = InputBox("Veuillez saisir le prénom et le nom de l'agent administratif")
            If Nom = "" Then
                MsgBox "Vous n'avez pas saisi le prénom et le nom de l'agent administratif !"
            Exit Sub
            End If
        'Recherche le nom de l'agent
            Range("E4") = Nom
        'Effacer les colonnes
            Range("A4:D4,F4:R4") = Empty
        'On commence à la ligne 7 de la colonne ID N° (jusqu'à) la fin du tableau et on revient à la dernière ligne écrite
            For Ligne = 7 To Cells(Rows.Count, "A").End(xlUp).Row
        'Résultat de la recherche par le nom et incrémentation dans la cellule de résultat
            If Range("E4") = Cells(Ligne, "E") Then
        'On recherche les informations dans les colonnes et on les incrémente dans la ligne de résultat
            Range("A4:R4").Value = Range(Cells(Ligne, "A"), Cells(Ligne, "R")).Value
     
      Dim oList As ListObject
      Dim Cell As Range
      Set oList = ActiveSheet.ListObjects(1)
      Set Cell = oList.DataBodyRange.Cells(2, 2)
      Application.Goto Reference:=Cell.Address(ReferenceStyle:=xlR1C1)
     
     
                Exit For
            End If
        ' Recherche dans les autres lignes
            Next Ligne
        'Libérer l'écran pour l'utilisateur
            Application.ScreenUpdating = True
    End Sub

    J'espère que vous comprendrez mon besoin. Je vous souhaite une agréable journée

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 762
    Points : 28 621
    Points
    28 621
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tout est programmable mais par moment on doit se poser la question de savoir si cela a du sens de réinventer ce qui nativement proposé par Excel. On peut ainsi refaire en VBA la somme d'une plage mais est-ce sérieux ?
    Le filtre d'excel permet de faire cela et Patrice dans sa réponse te l'a signalé mais tu n'as pas répondu à sa question " Pourquoi une macro ?"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Pourquoi une macro ? Un filtre colonne B sur la valeur de B1 devrait suffire.
    Bonjour, merci pour votre réponse. Effectivement cette solution est là meilleure sachant que l'on peut faire un filtre sur une couleur
    Très bonne journée

  7. #7
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Tout est programmable mais par moment on doit se poser la question de savoir si cela a du sens de réinventer ce qui nativement proposé par Excel. On peut ainsi refaire en VBA la somme d'une plage mais est-ce sérieux ?
    Le filtre d'excel permet de faire cela et Patrice dans sa réponse te l'a signalé mais tu n'as pas répondu à sa question " Pourquoi une macro ?"
    Merci Philippe pour cette réponse. Effectivement comme je commence à me passionner pour le VBA, je cherche à tout programmer. Il faut que je sois plus simple dans ce que je veux faire
    Effectivement cette solution de Patrice est là meilleure sachant que l'on peut faire un filtre sur une couleur
    Très bonne journée

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 762
    Points : 28 621
    Points
    28 621
    Billets dans le blog
    53
    Par défaut
    Bonjour Kaytilou,
    Je suis également un passionné de VBA mais avant tout d'excel et je privilégie les fonctionnalités natives d'excel avant de programmer

    Le filtre offre de multiples possibilités que peu d'utilisateurs connaissent. Par exemple le fait de pouvoir conserver les recherches précédemment filtrées.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Merci Philippe
    C'est quoi la petite astuce que l'on ne connait pas de pouvoir conserver les recherches précédemment filtrées.
    Très bonne journée

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 762
    Points : 28 621
    Points
    28 621
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est quoi la petite astuce que l'on ne connait pas de pouvoir conserver les recherches précédemment filtrées
    Attention je n'ai pas dit que tu ne connaissais pas, j'ai simplement écrit que "peu d'utilisateur connaissent cette fonctionnalité" et c'est par mon expérience des formations que je dispense

    Dans l'illustration ci-dessous, je viens de filtrer les noms commençant par la lettre C et maintenant je vais filtrer les noms se terminant par la lettre R en conservant ma sélection précédente
    L'usage des caractères génériques est d'ailleurs également peu connue alors que cela existe depuis me DOS (près de 40 ans)
    Nom : 200414 dvp Filtre ajouté à la sélection précédente.png
Affichages : 1011
Taille : 33,0 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Ne t'inquiétes pas, je ne l'ai pas pris pour moi tout au contraire, c'était pour enricher mes connaissances
    Et cette astuce, je la connais et je l'utilise souvent
    Très belle journée

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

Discussions similaires

  1. Rechercher une ligne vide
    Par nico-pyright(c) dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 22/12/2005, 17h10
  2. Comment rendre une ligne de tableau en liens
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 11/09/2005, 23h14
  3. Changer la couleur d une ligne de tableau au survol
    Par logica dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/07/2005, 11h57
  4. Ajouter une ligne à un tableau
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h20
  5. Lien sur une ligne de tableau
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2005, 11h36

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