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 :

Recherche titre sur ligne et copie colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut Recherche titre sur ligne et copie colonne
    Bonjour, bonjour

    Pour simplifier le mise en page de mes données rééls, il faudrait que je ne copie que les données qui m'interresse de ma page de simulation, le fichier prendra alors moins de place.

    Pour cela, il faudrait que je puisse récupérer uniquement les colonnes que je souhaite, en fesant une recherche par titre sur ma ligne1
    quand titre trouver, le système recopie, la colonne correspondante sur la feuille suivante.

    Donnée en feuille1, recopie en feuille2, et cela pour plusieurs titres.
    Ou sinon, est-il possible de recopie mes colonnes sur un nouveau classeur, comme sa pas besoin de modifier de trop ma macro

    Merci

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bon on manque un peu de description sur l'organisation des feuilles .. tiens pour t'aider à débuter ci-joint un code qui parcours les cellules d'entête de la feuille active :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sub ParcoursEntete 
    Dim rEntete As Range 'ligne d'entête
     Dim MaW As Worksheet 'Feuille traité...
     Dim c As Range
     Set MaW = ActiveSheet 'Bon je travaille sur feuille en cours
     Set rEntete = MaW.Range("A1").CurrentRegion.Rows(1)
     For Each c In rEntete.Cells
       MsgBox c
     Next
     End Sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    n_obs	callsign	sector_on_frequency	Reptime	latitude	longitude	activity	afl
    1	TBS_EW	FS	16:44:15	48:59:58:N	002:37:57:E	0	20
    3	TBS_EW	FS	16:44:20	48:59:59:N	002:38:28:E	0	22
    6	TBS_EW	FS	16:44:25	49:00:02:N	002:38:59:E	0	23
    7	TBS_EWC	FS	16:44:25	48:59:58:N	002:37:57:E	0	20
    10	TBS_EW	FS	16:44:30	49:00:06:N	002:39:30:E	0	25
    11	TBS_EWC	FS	16:44:30	48:59:59:N	002:38:28:E	0	22
    voila un morceau,j'ai 56 colonnes environs
    et j'utlise toujours les colonnes portant les noms heading,callsign...

    se qu'il me faut c'est savoir comment rechercher ses titres sur ma ligne1, qui me copiera ensuite les colonnes

    Sur un autre classeur,c'est possible?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    il y as peu être un truc qui le fait sans macros sous excel c'est le filtre élaboré... données filtre élaboré .. tu te place sur feuille destination , aprés avoir placé en ligne 1 les colonnes souhaitées .. puis données filtre élaborés...

    tu sélection "Copier les vers autre emplacement.."
    - Puis dans plages tu sélection la plage de donnée de ta feuille source
    - dans critéres tu met rien (pour avoir tout )
    - dans copier Dans tu sélectionne les entêtes que tu as préparés dans ta feuille destination ...

    si cela te va ... ben tu lance l'enregistreur de macro ... tu refait la même chose et aprés tu étudie le code généré..




  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    le filtre élaboré?

    qu'est ce qui c'est que se truc encore



    mais sa marcherai avec un autre classeur?

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par baptbapt
    Sa me va, mais pour faire la meme chose sur un autre classeur, c'est feusable ou pas.

    Mais sinon sa va
    tu ne la pas encore essayé ..?

    ..tiens j'ai complété ma macro de definition entête, et j'y est rajouté le filtre élaboré... manque à modifier les 2 lignes Set...;

    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
     
    Sub test()
     Dim rEntete As Range 'ligne d'entête
     Dim MaW As Worksheet 'Feuille généré...
     Dim Ws As Worksheet ' feuille Classeur Source
     Dim c As Range
     Set MaW = ActiveSheet 'Bon je travaille sur feuille en cours
     Set Ws = Workbooks("Classeur2").Sheets(1) 'A modifier en fonction classeur actif
     Set rEntete = MaW.Range("A1").CurrentRegion.Rows(1)
     rEntete.Parent.Activate 'La feuille destination doit être active
        Ws.Range("A1").CurrentRegion.AdvancedFilter Action _
            :=xlFilterCopy, CopyToRange:=rEntete, Unique:=False
     
     
     'Libération des objets..
    Set MaW = Nothing
    Set Ws = Nothing
    End Sub

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    Comprend il veut pas quend je fait ma macro enregistré, il me dit uniquement donnée filtrée par la feuille active


    Classeur2 dans ta macro, c'est la destination de mes variables, c'est sa

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    c'est pour cela que j'ai écrit...

    Citation Envoyé par bbil
    ..tu te place sur feuille destination ...

    mon code active feuille destination avant d'effectuer le filtre... à tu pu le tester ..?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    bon tout compte fait je vai tou faire sur la meme feuille, sa fera moins de problème, par contre quand je lance ta macro j'ai une erreur sur la feuille active, il demande d'avoir minimum 2 lignes

    Bon je recommence encore pour voir

    Veu rien savoir se PC, j'essaye toute les positions, veu pas les copier les données, commence vraimant à me courir sur le sytème

    Je joint un exemple avec des lignes supprimé, sinon trop gros, vraiment trop gros
    Fichiers attachés Fichiers attachés

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    T'as fait un filtre automatique pas un filtre élaboré (enfin c'est ce que je vois avec Excel 97)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    C'est bon le filtre élaborer, fonctionne maintenant sur ma macro, mais j'essaye de modifier le code pour qu'il fasse se que je veu

    dure dure

    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 test()
     Dim rEntete As Range 'ligne d'entête
     Dim MaW As Worksheet 'Feuille généré...
     Dim Ws As Worksheet ' feuille Classeur Source
     Dim c As Range
     
    Set MaW = ActiveSheet 'Bon je travaille sur feuille en cours
    Set Ws = Workbooks("ACESTO1_ECHO5A_ISAINT2").Sheets(1) 'A modifier en fonction classeur actif
    Set rEntete = MaW.Range("A1").CurrentRegion.Rows(1)
     rEntete.Parent.Activate 'La feuille destination doit être active
        Ws.Range("A1").CurrentRegion.AdvancedFilter Action _
            :=xlFilterCopy, CopyToRange:=rEntete, Unique:=False
     'Libération des objets..
    Set MaW = Nothing
    Set Ws = Nothing
     
    End Sub
    la le code de bbil avec mon classeur.
    Le nom du classeur, il est possible de le remplacer par une variable
    en fesant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Classeur=UCase(InputBox("....","....",""))
    If Classeur="" Then Exit Sub
    Sa doit etre possible, comme sa pas besoin de toucher a la macro tout le temps
    Et c'est pas possible au lieu de travailler sur la page active, de lui dire sur cette page, et de rentrer cette page de la meme façon que le classeur?

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    je sais pas comment tu lance ta macro... il faut voir .. peu-être du coté des userforms... et tu te crée une userform avec un combobox reprenant la liste des classeurs ouvert .. ( il te permettra de sélectionner le classeur source..)

    et par exemple un contrôle refEdit ... pour sélectionner la cellule destination..(ainsi tu fais d'une pierre 2 coups, sélection classeur et feuille destination...) .. bon maintenant à toi de voir..

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    Je connais ni l'un ni l'autre, j'ai dit sa comme sa c'est tout.

    car lorsque l'on tape le code, on entre le nom, et sur mon autre macro, on antrait le secteur comme sa, pour le choisir.

    Pour cette macro, je vai tout faire sur le meme classeur, c'est pour sa que j'aimerai ne pas a taper le nom du classeur s'il ni en a qu'un seul.

    Par contre, il faut que je demande a mon chef comment il a fait pour modifier les donnée qui sont sur le feuil2 du dossier que j'ai joint.

    Pour le passage entre les 2 feuilles, je sais pas comment il a fait.
    Autant que je lui demande de me faire un enregistrement de macro pour le passage entre ces 2 feuilles, je la met dans mon programme et je fait le filtrage ensuite, comme sa plus simple, je pense.


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/06/2015, 14h12
  2. [XL-2013] Rechercher plusieurs valeurs sur la même ligne pour copie
    Par McRbt dans le forum Macros et VBA Excel
    Réponses: 61
    Dernier message: 16/06/2014, 16h07
  3. Recherche valeur sur 2 colonne et recupération du numero de la ligne
    Par sebastien-16600 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2013, 12h20
  4. Réponses: 3
    Dernier message: 27/08/2010, 13h01
  5. Réponses: 3
    Dernier message: 26/09/2005, 22h24

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