Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA recopie sur une autre feuille en fonction d'un critère

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fb62840

XLDnaute Impliqué
Bonjour,

J'aimerais connaître le code que je pourrais utiliser pour recopier sur une feuille spécifique le contenu d'une cellule présente sur une autre feuille en fonction d'un critère.

Je vous mets en pièce-jointe le fichier qui sera sans doute plus clair.

merci pour votre aide
 

Pièces jointes

Re : VBA recopie sur une autre feuille en fonction d'un critère

Bonjour,

Dans fichier joint macro de filtrage Avancé.
Les noms des feuilles devront commencés par 'inscrits ' (espace compris) et se terminer par le critère ("<8") tels que dans l'exemple.
A+
 
Re : VBA recopie sur une autre feuille en fonction d'un critère

Bonjour Hasco,

La solution proposé fonctionne parfaitement bien.

Dans certains cas il se peut que le nom de la feuille soit un peu plus "complexe" pour extraire le critère.

J'ai par exemple des feuilles qui sont ainsi nommée :

Inscrits <8 CLUB

Comment pourrais-je obtenir de ne sélectionner alors que le critère et pas les mots ?
 
Re : VBA recopie sur une autre feuille en fonction d'un critère

Bonjour,

A toi d'adapter, mais pour le cas que tu cites, tu peux le rajouter simplement:
Code:
Sub Extraire()
Dim plg As Range, f As Worksheet
Dim critere As String
    'déterminer la plage à extraire dans Base
    With Sheets("Base")
        Set plg = .Range("A1:D" & .Range("D" & Rows.Count).End(xlUp).Row)
    End With
    
    'Boucler sur toutes les feuilles du classeurs
    For Each f In ThisWorkbook.Sheets
        critere = ""
        'Si le nom de la feuille commence par 'inscrits ' (espace compris)
        If f.Name Like ("inscrits *") Then critere = Replace(f.Name, "inscrits ", "")
        If f.Name Like "* CLUB" Then critere = Replace(f.Name, " CLUB", "")
        If critere <> "" Then
            'nettoyer toutes les cellules de la feuille
            f.Cells.ClearContents
            'préparation du critère de filtrage avancé
            f.Range("A1") = "Catégorie"
            'critère basé sur la fin du nom de la feuille
            f.Range("A2") = "=""=" & critere & """"
            'Extraction des données
            plg.AdvancedFilter Action:=xlFilterCopy, _
                CriteriaRange:=f.Range("A1:A2"), CopyToRange:=f.Range("A4:D4"), Unique:=False
            'destruction des lignes de critère et séparation
            f.Rows("1:3").EntireRow.Delete
        End If
    Next
End Sub

A+
 
Re : VBA recopie sur une autre feuille en fonction d'un critère

Merci Hasco,

C'est vraiment éclairant... et apparemment très simple, il suffisait d'y penser... la différence s'appelle la culture et j'en manque visiblement

If f.Name Like ("inscrits *") Then critere = Replace(f.Name, "inscrits ", "")
If f.Name Like "* CLUB" Then critere = Replace(f.Name, " CLUB", "")

Merci beaucoup

ps : j'ai posté un autre message relatif à la recopie non plus de l'intégralité des lignes où l'on vérifierait la présence d'un critère mais d'une seule ligne sur la feuille de destination et des données d'une partie des colonnes seulement. J'ai cité dans ce message ton nom sur l'origine du script copié
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…