Excel, extraire des ligne sur autre onglet
Résolu/Fermé
geenfood69
geenfood69
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
geenfood69
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
A voir également:
- Excel extraire lignes selon critères
- Excel extraire données selon critère - Meilleures réponses
- Extraire des lignes d'un tableau excel - Meilleures réponses
- Formule excel extraire lignes selon critères ✓ - Forum - Excel
- Extraction de données automatique selon critères ✓ - Forum - Excel
- Extraire plusieurs enregistrements avec critère d'un tableau ✓ - Forum - Excel
- Extraire des lignes dans un fichier excel ✓ - Forum - Excel
- Excel, extraire des ligne sur autre onglet ✓ - Forum - Programmation
11 réponses
geenfood69
Modifié par geenfood69 le 10/10/2011 à 16:37
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
Modifié par geenfood69 le 10/10/2011 à 16:37
Ca ne semble pas clair du tout donc voici un lien vers le document: https://www.cjoint.com/?AJkqIgvGjEo
Lorsque je clique sur le bouton à l'onglet 1, je souhaitera activer une macro qui vas chercher dans tous les onglets suivants (le nbr d'onglet peut évoluer) toutes les lignes Qui ont l'état "A faire" dans la colone E.
En gros, je souhaite rapatrier toutes les lignes "A faires" sur l'onglet 1 afin de pouvoir suivre toutes mes actions en attente.
A dispo si besoin de plus d'info.
EN EFFET, ce serait super si l'on pouvait ajouter pour chaque ligne extraite, le nom de l'onglet (qui de fait comporte la date de saisie).
C'est vrai qu'avec cette macro, les celules avec beaucoup de données ne sont pas adaptées en taille (toutes les infos ne sont pas visibles.
J'ai essayé et la macro de Michel_m fonctionne bien, ce serait top d'ajouter le nom de l'onglet en face de chaque colonne. Mais si c'est trop compliqué je m'en arrangerai. Par contre la hauteur de ligne serait 1 plus, je vais voir si je trouve des macro sur ce sujet, ce devrait être faisable.
En tout cas merci, c'est déjà super ainsi...
Merci
Lorsque je clique sur le bouton à l'onglet 1, je souhaitera activer une macro qui vas chercher dans tous les onglets suivants (le nbr d'onglet peut évoluer) toutes les lignes Qui ont l'état "A faire" dans la colone E.
En gros, je souhaite rapatrier toutes les lignes "A faires" sur l'onglet 1 afin de pouvoir suivre toutes mes actions en attente.
A dispo si besoin de plus d'info.
EN EFFET, ce serait super si l'on pouvait ajouter pour chaque ligne extraite, le nom de l'onglet (qui de fait comporte la date de saisie).
C'est vrai qu'avec cette macro, les celules avec beaucoup de données ne sont pas adaptées en taille (toutes les infos ne sont pas visibles.
J'ai essayé et la macro de Michel_m fonctionne bien, ce serait top d'ajouter le nom de l'onglet en face de chaque colonne. Mais si c'est trop compliqué je m'en arrangerai. Par contre la hauteur de ligne serait 1 plus, je vais voir si je trouve des macro sur ce sujet, ce devrait être faisable.
En tout cas merci, c'est déjà super ainsi...
Merci
michel_m
Modifié par michel_m le 10/10/2011 à 13:35
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
Modifié par michel_m le 10/10/2011 à 13:35
Bonjour
Je ne sais pas si c'est clair (sans e !!!)
ce n'est pas clair du tout
je peux préciser au besoin
pourquoi ne pas le faire dès le départ ?
au besoin
mettre un extrait du classeur avec explications complètes et précises et sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
.
Michel
Je ne sais pas si c'est clair (sans e !!!)
ce n'est pas clair du tout
je peux préciser au besoin
pourquoi ne pas le faire dès le départ ?
au besoin
mettre un extrait du classeur avec explications complètes et précises et sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
.
Michel
michel_m
Modifié par michel_m le 10/10/2011 à 14:15
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
Modifié par michel_m le 10/10/2011 à 14:15
OK, merci. Dans le rapatriement, Faut il réserver une colonne pour les dates d'onglets?
michel_m
Modifié par michel_m le 10/10/2011 à 15:41
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
Modifié par michel_m le 10/10/2011 à 15:41
macro proposée 'sans les dates
reste à trouver un code pour les hauteurs de lignes
Sub rapatrier() Voir + bas End Sub
reste à trouver un code pour les hauteurs de lignes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Modifié par michel_m le 10/10/2011 à 15:42
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
Modifié par michel_m le 10/10/2011 à 15:42
macro avec les hauteurs de ligne
Sub rapatrier() Dim nbre_f As Byte, cptr_f As Byte, lig_vide As Byte Dim nbre As Byte, cptr As Byte, lig As Byte, hauteur As Single Dim nonfait 'initialisation Application.ScreenUpdating = False nbre_f = ThisWorkbook.Sheets.Count lig_vide = 7 With Sheets("A faire") .Range("B7:D260").Clear .Rows("7:260").RowHeight = 14 End With 'compilation For cptr_f = 2 To nbre_f - 1 With Sheets(cptr_f) If Name <> "list" And .Name <> "A faire" Then essai = .Name nbre = Application.CountIf(.Range("E7:E260"), "A faire") lig = 6 For cptr = 1 To nbre lig = .Columns("E").Find("A faire", .Cells(lig, "E")).Row hauteur = .Rows(lig).RowHeight nonfait = .Range(.Cells(lig, "B"), .Cells(lig, "D")).Value With Sheets("A faire").Cells(lig_vide, "B").Resize(1, 3) .Value = nonfait .RowHeight = hauteur .VerticalAlignment = xlTop .WrapText = True End With lig_vide = lig_vide + 1 Next End If End With Next Sheets("A faire").Range("B7:D" & lig_vide - 1).Borders.Weight = xlThin End Sub
geenfood69
10 oct. 2011 à 17:09
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
10 oct. 2011 à 17:09
Merci Michel, je viens d'y adjoindre une macro qui ajuste la hauteur de ligne. Super et un Grand merci à toi!
voici donc la Macro finale (on verra si des modifs sont utiles après mise en prod):
Private Sub CommandButton1_Click()
Dim nbre_f As Byte, cptr_f As Byte, lig_vide As Byte
Dim nbre As Byte, cptr As Byte, lig As Byte, hauteur As Single
Dim nonfait
'initialisation
Application.ScreenUpdating = False
nbre_f = ThisWorkbook.Sheets.Count
lig_vide = 7
With Sheets("A faire")
.Range("B7:D260").Clear
.Rows("7:260").RowHeight = 14
End With
'compilation
For cptr_f = 2 To nbre_f - 1
With Sheets(cptr_f)
If Name <> "list" And .Name <> "A faire" Then
essai = .Name
nbre = Application.CountIf(.Range("E7:E260"), "A faire")
lig = 6
For cptr = 1 To nbre
lig = .Columns("E").Find("A faire", .Cells(lig, "E")).Row
hauteur = .Rows(lig).RowHeight
nonfait = .Range(.Cells(lig, "B"), .Cells(lig, "D")).Value
With Sheets("A faire").Cells(lig_vide, "B").Resize(1, 3)
.Value = nonfait
.RowHeight = hauteur
.VerticalAlignment = xlTop
.WrapText = True
End With
lig_vide = lig_vide + 1
Next
End If
End With
Next
Sheets("A faire").Range("B7:D" & lig_vide - 1).Borders.Weight = xlThin
For Each cel In ActiveSheet.UsedRange
If cel <> "" Then
Set m = cel.MergeArea
m.UnMerge
m.WrapText = True 'renvoie à la ligne
m.HorizontalAlignment = xlCenterAcrossSelection
m.Rows.AutoFit
m.Merge
m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
End If
Next
End Sub
Encore merci
Geenfood
voici donc la Macro finale (on verra si des modifs sont utiles après mise en prod):
Private Sub CommandButton1_Click()
Dim nbre_f As Byte, cptr_f As Byte, lig_vide As Byte
Dim nbre As Byte, cptr As Byte, lig As Byte, hauteur As Single
Dim nonfait
'initialisation
Application.ScreenUpdating = False
nbre_f = ThisWorkbook.Sheets.Count
lig_vide = 7
With Sheets("A faire")
.Range("B7:D260").Clear
.Rows("7:260").RowHeight = 14
End With
'compilation
For cptr_f = 2 To nbre_f - 1
With Sheets(cptr_f)
If Name <> "list" And .Name <> "A faire" Then
essai = .Name
nbre = Application.CountIf(.Range("E7:E260"), "A faire")
lig = 6
For cptr = 1 To nbre
lig = .Columns("E").Find("A faire", .Cells(lig, "E")).Row
hauteur = .Rows(lig).RowHeight
nonfait = .Range(.Cells(lig, "B"), .Cells(lig, "D")).Value
With Sheets("A faire").Cells(lig_vide, "B").Resize(1, 3)
.Value = nonfait
.RowHeight = hauteur
.VerticalAlignment = xlTop
.WrapText = True
End With
lig_vide = lig_vide + 1
Next
End If
End With
Next
Sheets("A faire").Range("B7:D" & lig_vide - 1).Borders.Weight = xlThin
For Each cel In ActiveSheet.UsedRange
If cel <> "" Then
Set m = cel.MergeArea
m.UnMerge
m.WrapText = True 'renvoie à la ligne
m.HorizontalAlignment = xlCenterAcrossSelection
m.Rows.AutoFit
m.Merge
m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
End If
Next
End Sub
Encore merci
Geenfood
geenfood69
10 oct. 2011 à 17:11
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
10 oct. 2011 à 17:11
il ne reste que l'ajout dans la première colonne du nom de l'onglet d'ou sont extraites les lignes
michel_m
Modifié par michel_m le 11/10/2011 à 08:18
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
Modifié par michel_m le 11/10/2011 à 08:18
For Each cel In ActiveSheet.UsedRange If cel <> "" Then Set m = cel.MergeArea m.UnMerge m.WrapText = True 'renvoie à la ligne m.HorizontalAlignment = xlCenterAcrossSelection m.Rows.AutoFit m.Merge m.HorizontalAlignment = xlGeneral 'facultatif bien sûr End If Next
Très très lourd et maladroit... utilité de ce code?
Peut-être daignerais tu lire le code que je t'ai envoyé avant d'ajouter tes codes?
:o(
geenfood69
Modifié par geenfood69 le 11/10/2011 à 09:10
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
Modifié par geenfood69 le 11/10/2011 à 09:10
C'est pas la peine de s'enerver, je suis pas programmateur, j'essai de bidouiller un truc qui marche et je n'avais pas vu que ton code avait déjà le changement de heuteur de ligne...
En tout cas j'ai pris ton code tel qu'il est posté et ça fonctionne bien donc c'est parfait.
j'ai aussi essayé de changer le code afin qu'il reprenne le contenu de la première colone "num" de chaque feuille, mais sans succès...
Comme la 1ère colonne de chaque onglet comporte une cellule, ce n'est peut être pas possible de rapatrier le résultat dans la 1ère colone de l'onglet "a faire". La solution pourrait être de placer sur chaque ligne rapatriée, le nom de l'onglet d'ou vient l'info.
Aurais tu une piste?
merci, a+
En tout cas j'ai pris ton code tel qu'il est posté et ça fonctionne bien donc c'est parfait.
j'ai aussi essayé de changer le code afin qu'il reprenne le contenu de la première colone "num" de chaque feuille, mais sans succès...
Comme la 1ère colonne de chaque onglet comporte une cellule, ce n'est peut être pas possible de rapatrier le résultat dans la 1ère colone de l'onglet "a faire". La solution pourrait être de placer sur chaque ligne rapatriée, le nom de l'onglet d'ou vient l'info.
Aurais tu une piste?
merci, a+
michel_m
11 oct. 2011 à 09:25
- Messages postés
- 16570
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 26 mai 2022
11 oct. 2011 à 09:25
C'est pas la peine de s'enerver
je ne me suis pas énervé, je suis déçu par ton attitude et surpris par ta réaction: je ne suis pas ton serviteur
donc, tu cherches tout seul
je ne me suis pas énervé, je suis déçu par ton attitude et surpris par ta réaction: je ne suis pas ton serviteur
donc, tu cherches tout seul
geenfood69
11 oct. 2011 à 09:56
- Messages postés
- 11
- Date d'inscription
- mercredi 13 janvier 2010
- Statut
- Membre
- Dernière intervention
- 21 novembre 2011
11 oct. 2011 à 09:56
sans commentaires...
En tout cas, merci pour ce que tu as posté, ça m'a bien aidé parce que comme je te l'ai dit je n'y connais rien en programmation.
Je vais essayer de me débrouiller pour trouver le reste.
En tout cas, merci pour ce que tu as posté, ça m'a bien aidé parce que comme je te l'ai dit je n'y connais rien en programmation.
Je vais essayer de me débrouiller pour trouver le reste.