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 :

Problème dans une macro de recherche sur plusieurs onglets


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingé matériaux
    Inscrit en
    Mai 2019
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingé matériaux

    Informations forums :
    Inscription : Mai 2019
    Messages : 47
    Par défaut Problème dans une macro de recherche sur plusieurs onglets
    Bonjour,

    J'ai un fichier excel qui contient 30 onglets.
    Les premiers onglets sont des années de 2019 à 2000.
    Les seconds sont des noms.

    Chaque onglet est organisé de la même manière, première colonne numéro, seconde colonne ville et ainsi de suite jusqu'à la colonne Q.

    J'ai demandé de l'aide pour un autre fichier excel pour une macro qui me permettrait de faire une recherche avec un bouton sur tous les onglets à la fois que j'ai adapaté comme j'ai pu ici

    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
    Sub test1()
    Dim derlig As Long
    derlig = Sheets("Recherche").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Recherche").Range("A10:AA" & derlig).ClearContents
    Dim w As Worksheet
    Dim derlig2 As Long
    Dim L As Long
    L = 10
    For Each w In ThisWorkbook.Worksheets
     If w.Name = "2019" Or w.Name = "2018" Or w.Name = "2017" Or w.Name = "2016" Or w.Name = "2015" Or w.Name = "2014" Or w.Name = "2013" _
    Or w.Name = "2012" Or w.Name = "2011" Or w.Name = "2010" Or w.Name = "2009" Or w.Name = "2008" Or w.Name = "2007" Or w.Name = "2006" _
    Or w.Name = "2005" Or w.Name = "2004" Or w.Name = "2000-2003" Or w.Name = "Prenom1" Or w.Name = "Prenom2" _
    Then w.Range("A2:Q1200").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Recherche").Range("A2:Q3"), CopyToRange:=Sheets("Recherche").Range("A" & L), Unique:=False
    L = Sheets("Recherche").Range("A" & Rows.Count).End(xlUp).Row + 1
    Next w
    Sheets("Recherche").Select
    End Sub
    QUand j'ai juste les dates la macro tourne vraiment bien, cepandant quand j'ajoute le premier prénom, c'est la débandade...
    Je n'arrive pas à comprendre pourquoi...

    J'ai fait un copier-coller sur toutes les feuilles des en-têtes (pour la recherche càd numéro, ville, etc), donc ca ne vient pas de là à priori.

    J'ai l'impression que cela vient de la variable w.

    Petit info, j'ai masqué les onglets années.

    Voila, voilà, si quelqu'un sait m'aider ^^
    Merci beaucoup par avance,
    Bonne journée,
    Bastien

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 162
    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 : 13 162
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La dernière ligne (Sheets("Recherche").Select) me semble parfaitement inutile et pour y voir plus clair, j'utiliserais le Select Case plutôt que le If Then (lignes 10 à 13 de la procédure)

    Soit
    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
    Sub test1()
      Dim derlig As Long
      derlig = Sheets("Recherche").Range("A" & Rows.Count).End(xlUp).Row
      Sheets("Recherche").Range("A10:AA" & derlig).ClearContents
      Dim w As Worksheet
      Dim derlig2 As Long
      Dim L As Long
      Dim flag As Boolean
      L = 10
      For Each w In ThisWorkbook.Worksheets
        Select Case w.Name
          Case "2004" To "2019": flag = True
          Case "2000-2003", "Prenom1", "Prenom2": flag = True
          Case Else: flag = False
        End Select
        If flag Then
           w.Range("A2:Q1200").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Recherche").Range("A2:Q3"), CopyToRange:=Sheets("Recherche").Range("A" & L), Unique:=False
        End If
        L = Sheets("Recherche").Range("A" & Rows.Count).End(xlUp).Row + 1
      Next w
      Sheets("Recherche").Select
    End Sub
    J'ai l'impression que cela vient de la variable w.
    A première vue, cela m'étonnerait

    On peut voir en image la plage des critères et la ligne des titres d'une des feuilles à copier ?
    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

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Salut Philippe,

    Personnellement, j'aurais utilisé un Select Case True en testant la propriété IsNuméric et la valeur + 0

    Mais ton code est plus simple et, partant, plus performant,

    Cela signifie-t-il que Excel va transformer cette chaîne de caractères en nombre?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 162
    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 : 13 162
    Billets dans le blog
    53
    Par défaut
    Bonjour Marcel,
    Personnellement, j'aurais utilisé un Select Case True en testant la propriété IsNuméric et la valeur + 0
    J'utilise le Select Case True lorsque les tests portent sur des comparaisons de nature différentes

    Cela signifie-t-il que Excel va transformer cette chaîne de caractères en nombre?
    Pas du tout, le nom des onglets étant alphanumériques, il s'agit bien de tester des chaînes de caractères
    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

  5. #5
    Membre averti
    Homme Profil pro
    Ingé matériaux
    Inscrit en
    Mai 2019
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingé matériaux

    Informations forums :
    Inscription : Mai 2019
    Messages : 47
    Par défaut
    BOnjour et merci pour vos réponses rapides,

    En vrai j'ai exactement le même soucis, cela fonctionne pour les onglets dates, mais pas pour les onglets avec les prénoms, dès que je les inclu dans la recherche tout plante.

    C'est clair que le code que tu m'as donné et mieux et plus clair ^^ je vais m'en servir.

    Pour ce qui est de l'image, laissez moi un peu de temps et je crée un fichier excel similaire, malheureusement toutes les infos dessus (même le titre des colonnes et oui c'est possible ^^) sont confidentielles...

    Merci encore.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 162
    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 : 13 162
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En vrai j'ai exactement le même soucis, cela fonctionne pour les onglets dates, mais pas pour les onglets avec les prénoms, dès que je les inclu dans la recherche tout plante.
    Je n'ai jamais écrit que le problème venait de là mais que c'était plus clair.

    J'attends donc les images.
    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

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Philippe,

    J'utilise le Select Case True lorsque les tests portent sur des comparaisons de nature différentes
    Moi aussi.
    Et, dans mon esprit, c'était le cas ici.
    Test sur numéro de feuille (IsNuméric)
    Test sur le nom de la feuille.

    Mais, comme je te l'ai mentionné, ton code est plus simple.

    Passe une bonne soirée.
    Bonne soirée au Forum.

  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
    13 162
    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 : 13 162
    Billets dans le blog
    53
    Par défaut
    Bonjour Marcel,
    Et, dans mon esprit, c'était le cas ici.
    Test sur numéro de feuille (IsNuméric)
    Test sur le nom de la feuille.
    "2004", "2019", etc. ne sont pas des numéros de feuilles mais des noms
    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

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

Discussions similaires

  1. Problème dans une macro
    Par bentor22 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/05/2013, 10h22
  2. Réponses: 2
    Dernier message: 29/07/2010, 21h58
  3. Problème dans une macro
    Par tiyolx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/08/2008, 14h40
  4. fonction qui écrit dans une barre de recherche sur internet
    Par ubssecurities dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2008, 10h36
  5. Forger une requete de recherche sur plusieurs tables.
    Par robocop333 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h44

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