XL 2013 copier coller des plages de données selon critere dans une autre feuille selon de la feuille

  • Initiateur de la discussion Initiateur de la discussion titil97
  • 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 !

titil97

XLDnaute Nouveau
Bonjour,

J'ai trouvé cette macro qui marche bien. Mais il me manque un truc (je ne veux pas que la colonne "nom" soi exporté bien que c'est ma référence et je voudrais aussi que le début de la plage copiée atterrisse en B64.

Pouvez vous m'aider?
 

Pièces jointes

Bonjour et bienvenue sur le forum.

Demande éffectuée à 11:28 et rappel à 12:18. Va falloir apprendre à être patient...😉 on est pas aux pièces.

voici ce qu'est devenue votre macro2 après avoir supprimé les colonnes 'Nom' des feuilles.
AdvancedFilter ne copie pas les données des colonnes dont il ne trouve pas l'étiquette dans la destination.

VB:
Sub Macro2()
    Dim pl As Range
    Set pl = Sheets("Feuil1").Range("base")
    pl.Name = "base"
    For Each sh In Sheets
        If sh.Name <> "Feuil1" Then
            With sh
                .[K1] = "Nom"
                .[K2] = sh.Name
                pl.AdvancedFilter Action:=xlFilterCopy, _
                                  CriteriaRange:=.[K1:K2], CopyToRange:=.Range("A1:i1"), Unique:=False
                .[K1:K2].ClearContents
            End With
        End If
    Next sh
End Sub

P.S. vous avez excel 2013, pourquoi ne pas enregistrer vos fichier en .xlsx, format existant depuis la version 2007 plus léger et répondant aux normes d'aujourd'hui.

Bon après-midi, que je vous souhaite pleine d'attentes diverses...
 

Pièces jointes

J'ai essayé ça mais ça marche pas

Je vous avouerai que c'est pas trop mon truc les macros 🙂

Si je change l emplacement des étiquettes ça marche?

VB:
VB:Copier dans le presse-papier

Sub Macro2()
    Dim pl As Range
    Set pl = Sheets("Feuil1").Range("base")
    pl.Name = "base"
    For Each sh In Sheets
        If sh.Name <> "Feuil1" Then
            With sh
                .[K1] = "Nom"
                .[K2] = sh.Name
                pl.AdvancedFilter Action:=xlFilterCopy, _
                                  CriteriaRange:=.[K1:K2], CopyToRange:=.Range("B64"), [/COLOR]Unique:=False
                .[K1:K2].ClearContents
            End With
        End If
    Next sh
End Sub
 
Dernière édition:
Re,
Ce que je vous disais au post #2
AdvancedFilter ne copie pas les données des colonnes dont il ne trouve pas l'étiquette dans la destination.

Cela suppose que vous mettiez les étiquettes (entêtes) de colonnes désirées dans la plage de destination (B64:J64).

Que vous mettiez l'addresse complète en tant que destination et le . (point) devant qui se rapportera à l'objet référencé par la ligne With, à savoir 'sh' qui est la feuille de destination.

si vous ne mettez que B64 sans les entêtes sur la feuille de destination, il vous remettra TOUTES les entêtes y compris 'Nom'

donc CopyToRange:= .Range("B64;J64") 'Ne pas oublier le point devant Range

Et si cela ne va pas. Plutôt que de dire 'cà marche pas', décrivez ce qui se passe lorsque vous lancez votre macro, avec éventuellement les messages d'erreur et sur quelle ligne vous renvoie le debogueur

A+
 
Dernière édition:
je reviens sur le sujet j 'ai appliqué la macro à un tableau et j'ai une erreur

Code:
Set pl = Sheets("Feuil1").Range("base")

ça me met erreur définie par l'application ou l'objet

VB:
Sub Macro2()
    Dim pl As Range
    Set pl = Sheets("Feuil1").Range("base")
    pl.Name = "base"
    For Each Sh In Sheets
        If Sh.Name <> "Feuil1" Then
            With Sh
                .[K1] = "Nom"
                .[K2] = Sh.Name
                pl.AdvancedFilter Action:=xlFilterCopy, _
                                  CriteriaRange:=.[K1:K2], CopyToRange:=.Range("D63:L63"), Unique:=False
                .[K1:K2].ClearContents
            End With
        End If
    Next Sh
End Sub

Merci pour votre aide
 
Re,

En fait il manquait des informations essentielles dans votre demande. Notamment sur le nom des feuilles à traiter. En examinant votre fichier j'en ai déduis que seules les feuilles dont le nom est dans la colonne A de la feuille 'nom' (cachée) était à traiter.

Tâchez la prochaine fois d'être plus précis.
Et pourquoi vous n'enregistrez pas vos classeur en XLSX. A moins de travailler sous une version excel <2007 le format .xls n'a plus lieu d'être

Cordialement
 

Pièces jointes

Bonjour,

Ici il s'agissait d'un filtre avancé, pour faire ce que vous désirez, soit il faut affiner le filtre soit faire tout à fait autre chose.
Aussi comme il s'agit d'autre chose, ouvrez une nouvelle discussion en expliquant en long et en travers (notamment tous les critères permettant de sélectionner la ligne désirée) et ce que vous voulez exactement en faire.
Joignez un fichier exemple à votre nouvelle discussion.

Cordialement
 
- 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

Retour