Macro- afficher les lignes d'autres feuilles

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

Droog

XLDnaute Nouveau
Bonjour à tous
Je suis bien débutante dans les macros et j'ai grandement besoin d'aide.
J'ai un classeur où mes feuilles marchent par 2. Une feuille avec les actions (lignes) a mener avant la date x et une feuille "archives". Quand l'action est terminée, on appuie sur le bouton transfert et la macro envoie les actions dont la date de fin est renseignée en archive. Il reste donc sur la page "open issues" que les actions en cours. Il y a plusieurs projets donc plusieurs groupes de 2 feuilles.
Maintenant j'aimerai arriver à avoir une feuille "recap" qui liste toutes les actions de tous les projets encore présente dans les feuilles "open issues" et qu'elles soient trier dans l'ordre chronologique, du plus vieux au plus récent par la colonne H.

J'ai essayé de bidouiller en récupérant d'autres macros mais je n'y arrive pas.
Si jamais quelqu'un a un peu de temps pour me montrer comment faire ça serait super.
Merci
 

Pièces jointes

Re : Macro- afficher les lignes d'autres feuilles

Bonsoir Droog, bienvenue dans le forum, bonsoir le forum,

Peut-être comme ça (à adapter car il n'y avait aucune données) :
Code:
Sub Recap()
Dim og As Worksheet 'déclare la variable og (OnGlet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)
 
'****************************************************
'récupération des données dans les différents onglets
'****************************************************
For Each og In Sheets 'boucle sur tous les onglets du classeur
    Select Case Left(og.Name, 4) 'action en fonction des 4 premières lettres du nom de l'onglet
        Case "Open" 'cas "Open"
        'condition : si la cellule A5 n'est pas vide (donc si l'onglet contient des données)
        If og.Range("A5").Value <> "" And og.Range("A5").Value <> 0 Then
            Set dest = Sheets("Recap").Range("A65536").End(xlUp).Offset(1, 0) 'définit la cellule de destination
            Set pl = og.Range("A5:L" & og.Range("A65536").End(xlUp).Row) 'définit la plage pl à copier
            pl.Copy dest 'copie la plage pl et la colle dans dest
        End If 'fin de la conditon
    End Select 'fin de l'action en fonction de...
Next og 'prochain onglet de la boucle
 
'***************
'tri des données
'***************
With Sheets("Recap") 'prend en compte l'onglet "Recap"
    .Activate 'active l'onglet
    If .Range("H2").Value = "" Then Exit Sub
    'tri croissant par rapport à la colonne H
    .Range("A2").CurrentRegion.Sort Key1:=.Range("H2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With 'fin de la prise en compte de l'onglet "Recap"
End Sub
 
Dernière édition:
Re : Macro- afficher les lignes d'autres feuilles

C'est presque parfait, il me reste 2 problèmes.
Le premier c'est qu'à chaque fois que je fais tourner la macro j'ai la liste des actions en cours qui s'ajoute, du coup je me retrouve avec plusieurs fois les mêmes actions. Quelle serait la commande pour demander à excel de supprimer toutes les lignes de 2 à la fin avant de lancer la macro?
Deuxième point pour lancer la macro j'ai fait un bouton "mise à jour" auquel je l'ai affectée. Mais je ne sais pas ou placer mon bouton. J'ai une ligne de titre de colonne. Si je place le bouton en dessous mes lignes s'ajoutent sous le bouton et une partie des infos est cachée. Si je le place au dessus de ma ligne de titre, les lignes s'insèrent au dessus de la ligne de titre aussi.
 
Re : Macro- afficher les lignes d'autres feuilles

Bonjour Droog, bonjour le forum,

En pièce jointe ton fichier modifié avec un bouton dans l'onglet Recap et les modifications apportées :

Code:
Sub Recap()
Dim og As Worksheet 'déclare la variable og (OnGlet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)
 
'*********************************
'suppression des anciennes données
'*********************************
Sheets("Recap").Range("A2").CurrentRegion.Clear
 
'****************************************************
'récupération des données dans les différents onglets
'****************************************************
For Each og In Sheets 'boucle sur tous les onglets du classeur
    Select Case Left(og.Name, 4) 'action en fonction des 4 premières lettres du nom de l'onglet
        Case "Open" 'cas "Open"
        'condition : si la cellule A5 n'est pas vide (donc si l'onglet contient des données)
        If og.Range("A5").Value <> "" And og.Range("A5").Value <> 0 Then
            Set dest = Sheets("Recap").Range("A65536").End(xlUp).Offset(1, 0) 'définit la cellule de destination
            Set pl = og.Range("A5:L" & og.Range("A65536").End(xlUp).Row) 'définit la plage pl à copier
            pl.Copy dest 'copie la plage pl et la colle dans dest
        End If 'fin de la conditon
    End Select 'fin de l'action en fonction de...
Next og 'prochain onglet de la boucle
 
'***************
'tri des données
'***************
With Sheets("Recap") 'prend en compte l'onglet "Recap"
    .Activate 'active l'onglet
    If .Range("H2").Value = "" Then Exit Sub
    'tri croissant par rapport à la colonne H
    .Range("A2").CurrentRegion.Sort Key1:=.Range("H2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With 'fin de la prise en compte de l'onglet "Recap"
End Sub
 

Pièces jointes

Re : Macro- afficher les lignes d'autres feuilles

Bonjour Robert
Là ça marche plus. 😕
J'ai changé par la macro que vous m'avez donné. J'ai changé le A5 en A6 parce que la première ligne reste toujours à 0.
J'ai mis des exemples pour qu'on puisse voir apparaitre des actions dans Recap.
J'arrive pas à vérifier que la bonne macro soit affectée au bouton.
 

Pièces jointes

Re : Macro- afficher les lignes d'autres feuilles

Bonjour Droog, bonjour le forum,

Tu as recopié le code dans le Modul1 mais dans le code du bouton de commande il y avait toujours :
Code:
Modul[COLOR=red][B]e[/B][/COLOR]1.Recap
avec un e en trop. Enlève le e dans le code du CommandButton1 et ça ira mieux...

J'ai modifié le code mais même si tu m'as mis des données il me manque une chose importante. Pour récupérer les lignes de données des onglets dont le nom commence par Open il me faut savoir si il y aura forcément toujours une donnée renseignée dans la colonne A (le numéro). Sinon, quelle est la colonne qui contient toujours une information ? Car je me servirai de cette colonne pour faire la recherche et la récupération.

Je t'enverrai le fichier modifié après réception de tes réponses.

en attendant remplace le début de la macro par ce nouveau code ;
Code:
Dim pe As Range 'décalre la variable pe (Plage à Effacer)
 
'*********************************
'suppression des anciennes données
'*********************************
If Sheets("Recap").Range("A2").Value <> "" Then 'condition si la cellule A2 de l'onglet "Recap" n'est pas vide
    Set pe = Sheets("Recap").Range("A1").CurrentRegion 'définit la plage pe (avec la ligne 1)
    Set pe = pe.Offset(1, 0).Resize(pe.Rows.Count - 1) 'définit la plage pe (sans la ligne 1)
    pe.Clear 'efface la plage pe
End If 'fin de la condition
 
Re : Macro- afficher les lignes d'autres feuilles

Bonjour Robert
Je suis désolée je n'ai pas eu accès à internet hier.



Bonjour Droog, bonjour le forum,

Tu as recopié le code dans le Modul1 mais dans le code du bouton de commande il y avait toujours :
Code:
Modul[COLOR=red][B]e[/B][/COLOR]1.Recap
avec un e en trop. Enlève le e dans le code du CommandButton1 et ça ira mieux...

J'avais bien vu ce changement mais ça ne marchait pas plus.

J'ai modifié le code mais même si tu m'as mis des données il me manque une chose importante. Pour récupérer les lignes de données des onglets dont le nom commence par Open il me faut savoir si il y aura forcément toujours une donnée renseignée dans la colonne A (le numéro). Sinon, quelle est la colonne qui contient toujours une information ? Car je me servirai de cette colonne pour faire la recherche et la récupération.

Avec A6 ça marche très bien. La ligne A5 reste toujours à 0. Si il y a une action en attente, A6 contient un n° sinon elle est vide.

Je t'enverrai le fichier modifié après réception de tes réponses.

en attendant remplace le début de la macro par ce nouveau code ;
Code:
Dim pe As Range 'décalre la variable pe (Plage à Effacer)
 
'*********************************
'suppression des anciennes données
'*********************************
If Sheets("Recap").Range("A2").Value <> "" Then 'condition si la cellule A2 de l'onglet "Recap" n'est pas vide
    Set pe = Sheets("Recap").Range("A1").CurrentRegion 'définit la plage pe (avec la ligne 1)
    Set pe = pe.Offset(1, 0).Resize(pe.Rows.Count - 1) 'définit la plage pe (sans la ligne 1)
    pe.Clear 'efface la plage pe
End If 'fin de la condition
 

Pièces jointes

Re : Macro- afficher les lignes d'autres feuilles

Bonsoir Droog, bonsoir el forum,

Tu avais placé le code du CommandButton1 corrigé dans le Modul1 alors que celui qui lançait vraiment la procédure se trouvait dans le composant Feuil2(Recap). Et ce dernier contenait toujours l'erreur du e en trop. C'est pour cela que ça ne marchait toujours pas... J'ai corrigé et supprimé le doublon inutile...

Voici la version 02 de ton fichier modifié. Je pense qu'elle devrait convenir.
 

Pièces jointes

Re : Macro- afficher les lignes d'autres feuilles

Bonsoir Droog, bonsoir el forum,

Tu avais placé le code du CommandButton1 corrigé dans le Modul1 alors que celui qui lançait vraiment la procédure se trouvait dans le composant Feuil2(Recap). Et ce dernier contenait toujours l'erreur du e en trop. C'est pour cela que ça ne marchait toujours pas... J'ai corrigé et supprimé le doublon inutile...

Voici la version 02 de ton fichier modifié. Je pense qu'elle devrait convenir.

Bonjour
C'est exactement ça!! Merci beaucoup pour le temps passé à m'aider.
Je suis à la recherche d'une formation professionnelle sur les macros. J'espère pouvoir en suivre une rapidement.
 
- 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

Réponses
3
Affichages
564
Retour