Copier coller ligne et les X suivantes dans une autre feuille
Résolu
donromanodelasierra
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
donromanodelasierra Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
donromanodelasierra Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Copier coller ligne et les X suivantes dans une autre feuille
- Historique copier coller - Guide
- Site x - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
9 réponses
Bonjour,
Pour 1 ou plusieurs personnes ?
Si plusieurs personnes, combien il y en a t'il (environ) ?
dans l'attente, d'avance merci
Michel
Pour 1 ou plusieurs personnes ?
Si plusieurs personnes, combien il y en a t'il (environ) ?
dans l'attente, d'avance merci
Michel
Merci de te pencher sur le sujet.
Pour 1 seule personne.
En fait chaque personne possède son propre document Excel.
Je souhaite donc une macro me permettant d'extraire les passions de chaque personne (donc de chaque doc Excel) dans une autre feuille.
Par contre, le nombre de passions est inconnu et la position de la première ligne des passions est également inconnue.
doncromanodelasierra
Pour 1 seule personne.
En fait chaque personne possède son propre document Excel.
Je souhaite donc une macro me permettant d'extraire les passions de chaque personne (donc de chaque doc Excel) dans une autre feuille.
Par contre, le nombre de passions est inconnu et la position de la première ligne des passions est également inconnue.
doncromanodelasierra
re,
Un principe avec choix du mot clé possible par macro paramétrée
j'ai mis colonne F un peu au hasard soit 5 "cinéma": à toi de voir
peut ^tre aussi nommée la feuille "sortie" du nom du mot clé
Un principe avec choix du mot clé possible par macro paramétrée
j'ai mis colonne F un peu au hasard soit 5 "cinéma": à toi de voir
peut ^tre aussi nommée la feuille "sortie" du nom du mot clé
Sub demander_motclé()
Dim mot1 As String
mot1 = "Passion" 'prévioir peut ^tre validation de données dans feuille avec les rubriques
Call detailler(mot1)
End Sub
'------
Sub detailler(mot1)
Dim Ligdeb As Byte, Ligfin As Byte
Dim T_mot
Application.ScreenUpdating = False 'fige l'écran
With ActiveSheet
'ligne où se trouve "passion"
Ligdeb = .Columns("A").Find(mot1, .Range("A1"), xlValues).Row
'ligne avant nouveau mot clé
Ligfin = .Columns("A").Find("*", .Range("A" & Ligdeb), xlValues).Row - 1
'mémorise les détails de la "passion"
T_mot = .Range(.Cells(Ligdeb, "A"), .Cells(Ligfin, "F"))
End With
Sheets.Add
With ActiveSheet
.Name = "sortie" '??? mot1 peut-^tre plus parlant si autre rubrique
'restitue les détails
.Range("A1").Resize(UBound(T_mot), 6) = T_mot
End With
End Sub
Super, ton code marche bien !
J'ai pu l'adapter à mes besoins !
Complexifions le problème, si tu veux bien.
Maintenant, imaginons que j'ai 3 personnes :

En utilisant le code suivant (avec adaptation de ta fonction)
J'obtiens cela en sortie :

Outre le fait que tout est découpé (tous les prénoms, tous les enfants, etc...), la case "passions" ne sort que pour le premier prénom ...
Je trouve cela étrange, étant donné que j'utilise la même ligne de code pour les prenoms et pour les passions.
Dois-je créer un nombre de fonctions égal au nombre de personne (qui dépasserons rarement 4) en changeant la position d'écriture (A10 ici) dans la ligne :
Merci d'avance.
donromanodelasierra
J'ai pu l'adapter à mes besoins !
Complexifions le problème, si tu veux bien.
Maintenant, imaginons que j'ai 3 personnes :

En utilisant le code suivant (avec adaptation de ta fonction)
Sub Macro1()
'Recherche et copie des donnees voulues
Dim mot1 As String
Dim mot2 As String
Dim mot6 As String
Sheets.Add
ActiveSheet.Name = "rapport_customisé"
Dim entree As Worksheet
Dim cellule As Range
Dim ligne As Range
Dim sortie As Range
mot1 = "prenom"
mot2 = "Enfants"
mot6 = "passions"
Set entree = Worksheets(2)
Set sortie = Worksheets(1).Range("A1")
For Each ligne In entree.UsedRange.Rows
For Each cellule In ligne.Cells
If InStr(cellule.Text, mot1) > 0 Then
'// On a trouvé le mot dans une cellule de la ligne
ligne.Copy Destination:=sortie
Set sortie = sortie.Offset(1)
'// Pas la peine de continuer à chercher dans cette ligne
Exit For
End If
Next
Next
For Each ligne In entree.UsedRange.Rows
For Each cellule In ligne.Cells
If InStr(cellule.Text, mot2) > 0 Then
'// On a trouvé le mot dans une cellule de la ligne
ligne.Copy Destination:=sortie
Set sortie = sortie.Offset(1)
'// Pas la peine de continuer à chercher dans cette ligne
Exit For
End If
Next
Next
For Each ligne In entree.UsedRange.Rows
For Each cellule In ligne.Cells
If InStr(cellule.Text, mot6) > 0 Then
'// On a trouvé le mot dans une cellule de la ligne
Call detailler(mot6)
Set sortie = sortie.Offset(1)
'// Pas la peine de continuer à chercher dans cette ligne
Exit For
End If
Next
Next
'Mise en forme
ActiveSheet.Columns("A:B").EntireColumn.AutoFit
End Sub
'------
Sub detailler(mot6)
Dim Ligdeb As Byte, Ligfin As Byte
Dim T_mot
Application.ScreenUpdating = False 'fige l'écran
With Worksheets(2)
'ligne où se trouve "passion"
Ligdeb = .Columns("A").Find(mot6, .Range("A1"), xlValues).Row
'ligne avant nouveau mot clé
Ligfin = .Columns("A").Find("*", .Range("A" & Ligdeb), xlValues).Row - 1
'mémorise les détails de la "passion"
T_mot = .Range(.Cells(Ligdeb, "A"), .Cells(Ligfin, "J"))
End With
Worksheets(1).Range("A10").Resize(UBound(T_mot), 10) = T_mot
End Sub
J'obtiens cela en sortie :

Outre le fait que tout est découpé (tous les prénoms, tous les enfants, etc...), la case "passions" ne sort que pour le premier prénom ...
Je trouve cela étrange, étant donné que j'utilise la même ligne de code pour les prenoms et pour les passions.
Dois-je créer un nombre de fonctions égal au nombre de personne (qui dépasserons rarement 4) en changeant la position d'écriture (A10 ici) dans la ligne :
Worksheets(1).Range("A10").Resize(UBound(T_mot), 10) = T_mot
Merci d'avance.
donromanodelasierra
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé, mon support de travail a évolué.
Au moment où j'ai posé la question, je n'imaginais pas que ce cas pouvait arriver.
En fait j'utilise un logiciel qui me sors des résultats qui prennent la forme de l'exemple que j'ai utilisé.
Mon objectif est de faire du post traitement de ces résultats (en sélectionnant les données qui m'intéressent).
Quand j'ai commencé à faire mon code VBA, le cas "plusieurs personnes" ne s'était pas présenté.
Je suis désolé, je sais ce que je veux, mais j'ai malheureusement oublié d'anticiper ce problème.
J'essaierai de ne plus commettre cette erreur.
donromanodelasierra.
Au moment où j'ai posé la question, je n'imaginais pas que ce cas pouvait arriver.
En fait j'utilise un logiciel qui me sors des résultats qui prennent la forme de l'exemple que j'ai utilisé.
Mon objectif est de faire du post traitement de ces résultats (en sélectionnant les données qui m'intéressent).
Quand j'ai commencé à faire mon code VBA, le cas "plusieurs personnes" ne s'était pas présenté.
Je suis désolé, je sais ce que je veux, mais j'ai malheureusement oublié d'anticiper ce problème.
J'essaierai de ne plus commettre cette erreur.
donromanodelasierra.
Bonjour,
mets moi au moins une maquette de ce que tu as et de ce que tu veux obtenir
Non par images ce qui m'oblige à refaire ton classeur mais en joignant une pièce
Pour joindre une pièce: mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente
mets moi au moins une maquette de ce que tu as et de ce que tu veux obtenir
Non par images ce qui m'oblige à refaire ton classeur mais en joignant une pièce
Pour joindre une pièce: mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente
Bonjour,
Ce que j'ai est en feuille 1
Ce que je veux en 2
https://www.cjoint.com/?0LkoW6fdTyD
Actuellement, mon code me sort le tableau de mon message d'hier 17h43
Merci,
donromanodelasierra
Ce que j'ai est en feuille 1
Ce que je veux en 2
https://www.cjoint.com/?0LkoW6fdTyD
Actuellement, mon code me sort le tableau de mon message d'hier 17h43
Merci,
donromanodelasierra
Bonjour,
ci joint proposition à adapter à ton contexte (nom des feuilles, nombre de colonnes)
restitution en feuille "ccm" pour comparer avec "top du top"
https://www.cjoint.com/?3LlkTcsuB0D
OK ?
ci joint proposition à adapter à ton contexte (nom des feuilles, nombre de colonnes)
restitution en feuille "ccm" pour comparer avec "top du top"
https://www.cjoint.com/?3LlkTcsuB0D
OK ?