Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les lignes

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

cookies

XLDnaute Occasionnel
Bonjour,

Petit défi...

J'ai plusieurs feuilles (feuil2, feuill3,...) qui vont toutes contenir une valeur (un texte, comme "vélo" ou "chaise") au même endroit, disons en C3.
A partir de la première feuille (feuil1) j'aimerais qu'en rentrant la valeur en cellule A1, la macro cherche dans toutes les feuilles cette valeur et copie un nombre définie de ligne qui suive dans cette feuille.

Exemple :
j'entre "vélo" en cellule A1 de la feuil1.
La macro cherche dans toutes les cellules C3 de toutes les feuilles la valeur "vélo". La macro trouve la valeur, disons dans la cellule C3 de la feuil8 par exemple, et copie les lignes 5 à 15 de la feuil8 dans la feuil1.
(sachant que le nombre de feuilles peut etre amené à augmenter...)

Merci d'avance et je reste pas loin pour apporter des précisions si besoin.
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour cookies,

Petit défi : sauras-tu mettre en PJ un fichier avec quelques données et le résultat souhaité, comme le recommande la charte de ce joli forum ?

A+
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour à tous,

pour ton défit, pour commencer une boucle "for" partant de 2 jusqu'au nombre de feuilles de ton classeur.... ensuite l'opérateur "like" devrait te permettre d'effectuer une comparaison de texte de la cellule A1 de la feuille 1 avec les cellules C3 des autres feuilles.... des recherches sur le forum devraient t'aider.... bonne continuation dans ce challenge...

bon après midi
@+
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour,

En effet, je n'ai pas mis la pièce jointe, désolé.

J'ai tenté d'expliquer sur le fichier par un exemple et ce que je veux obtenir.
Merci et n'hésitez pas à revenir vers moi pour plus de précisions.

Cookies
 

Pièces jointes

Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour pierrot93

Pas facile de retrouver une problématique similaire sur le forum.
As tu un coup de pouce au moins vers les liens qui pourraient me renseigner vers les focntions dont tu me parles ?

Ce que j'arrive à faire c'est chercher une valeur dans une feuille mais pas dans une cellule spécifique. Je sais aussi faire le copier coller en vba (heureusement) mais je sais pas faire les liens entre la valeur cherchée et le copier/coller.

Merci encore
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonsoir à tous



Le problème doit déjà être traité sur ce forum, mais ça va aussi vite à réécrire qu'à rechercher.
Code à adapter :​
VB:
Sub toto()
Dim k&, Clef, fl As Worksheet
    With Me.[A9]
        Clef = Me.[A5].Value
        If Not IsEmpty(Clef) Then
            .Resize(2, 1) = 0
            .Parent.Range(.Cells, .End(xlDown)).EntireRow.Clear
            For Each fl In ThisWorkbook.Worksheets
                If fl.Name <> Me.Name Then
                    If fl.[E3].Value = Clef Then
                        fl.Rows("6:16").EntireRow.Copy Destination:=.Offset(11 * k)
                        k = k + 1
                    End If
                End If
            Next
        End If
    End With
End Sub
Voir la mise en œuvre dans le classeur joint.​



ROGER2327
#6072


Mercredi 25 Gidouille 139 (Saint Bouffre, pontife - fête Suprême Quarte)
21 Messidor An CCXX, 7,1333h - menthe
2012-W28-1T17:07:11Z
 

Pièces jointes

Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonsoir,

C'est un très beau code ! que ne je comprends pas très bien... En tt cas merci cela répond à ma problématique. Je l'ai tout de même adapté selon mes besoins et mes compétences car finalement ce n'est pas toute la ligne qu'il fallait que je copie (mais cela je sais faire)

Par ailleurs je profite de cela pour soumettre un deux soucis que je rencontre sur les liens hypertexte couplés avec la création de nouvelles feuille.

J'y suis presque mais...
1. Mon lien ne marche pas
2. le lien ne s'inscrit pas au bon endroit dans ma feuil1. Comment définir le premier emplacement du lien ? J'avais entré A10:A200...

Voici le code et la pièce jointe :

Sub lienhyper()

derligne = Sheets("feuil1").Range("A10:A200").End(xlUp).Row + 1
Sheets("feuil2").Copy After:=Sheets(Sheets.Count)
Dim z
z = InputBox("nom ?")
ActiveSheet.Name = z
Sheets("Feuil1").Activate
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & derligne), Address:="", SubAddress:= _
"'z" & derligne & "'!A1", TextToDisplay:=z

Merci d'avance

Cookies
 

Pièces jointes

Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour à tous, bonjour cookies


Cette nouvelle question étant totalement indépendante de la précédente et n'ayant aucun rapport avec le titre de la discussion, je pense qu'elle aurait mérité l'ouverture d'un nouveau sujet. Pas grave...

En supposant que vous vouliez créer votre premier lien en A10, une suggestion :​
VB:
Sub lienhyper()
Dim z$, derLigne&
    With Sheets("Feuil1").Range("A10")
        If IsEmpty(.Cells) Then derLigne = .Row - 1 Else derLigne = .Parent.Cells(.Parent.Rows.Count, .Column).End(xlUp).Row
        Sheets("Feuil2").Copy After:=Sheets(Sheets.Count)
N:      z = InputBox("Nom ?")
        If z <> "" Then
        On Error GoTo E
        ActiveSheet.Name = z
        On Error GoTo 0
        With .Parent
            .Hyperlinks.Add Anchor:=.[A1].Offset(derLigne), Address:="", SubAddress:=z & "!A1", TextToDisplay:=z
            .Activate
        End With
        Else
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            .Parent.Activate
            Application.DisplayAlerts = True
        End If
    End With
Exit Sub
'========= Gestionnaire d'erreurs =========
E:  MsgBox z & " n'est pas un nom valide."
    Resume N
End Sub
J'ai ajouté la gestion de l'erreur provoquée par la demande de création d'un onglet de même nom qu'un onglet existant, ou par la demande de création d'un onglet au nom invalide.​


Bonne nuit.



ROGER2327
#6074


Jeudi 26 Gidouille 139 (Sainte Goulache, odalisque - fête Suprême Quarte)
22 Messidor An CCXX, 0,2202h - cumin
2012-W28-2T00:31:42Z
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour,

En effet la fenetre d'erreur est très pratique.
Merci beaucoup pour votre aide. Il y a avait en effet pas mal d'erreur dans mon code, notamment sur le lien hypertexte. Mais je dois dire que ne n'aurais jamais su faire le coup du with pour insérer le lien sur une ligne spécifique.

Merci encore à vous tous et à vous Roger2327, peut etre dormez vous encore vu l'heure de réponse. 🙂
Bonne journée
Cookies
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Je rajoute une précision pour le code des liens :

Lorsque je change le A10 pour le début de la liste des liens, en D20 par exemple, il prend bien en compte la ligne mais pas la colonne. C'est dire qu'il me place le premier lien an A20. Puis, si je crée plusieurs feuilles, il écrsae le lien crée en A20 pour le remplacer par le lien vers la dernière feuille créée.

Avez vous une solution sur la base du code fourni par Monsieur Roger2327 ?
Merci d'avance
Bien à vous
Cookies
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonjour


Essayez ceci :​
VB:
Sub lienhyper()
Dim z$, derLigne&, fl As Worksheet
    With Sheets("Feuil1").Range("D10")
        Set fl = .Parent
        If IsEmpty(.Cells) Then derLigne = .Row - 1 Else derLigne = fl.Cells(fl.Rows.Count, .Column).End(xlUp).Row
        Sheets("Feuil2").Copy After:=Sheets(Sheets.Count)
N:      z = InputBox("Nom ?")
        If z <> "" Then
        On Error GoTo E
        ActiveSheet.Name = z
        On Error GoTo 0
        fl.Hyperlinks.Add Anchor:=fl.Cells(1, .Column).Offset(derLigne), Address:="", SubAddress:=z & "!A1", TextToDisplay:=z
        fl.Activate
        Else
            Application.DisplayAlerts = False
            ActiveSheet.Delete
            .Parent.Activate
            Application.DisplayAlerts = True
        End If
    End With
Exit Sub
'========= Gestionnaire d'erreurs =========
E:  MsgBox z & " n'est pas un nom valide."
    Resume N
End Sub


Bonne journée.


ROGER2327
#6076


Jeudi 26 Gidouille 139 (Sainte Goulache, odalisque - fête Suprême Quarte)
22 Messidor An CCXX, 3,7750h - cumin
2012-W28-2T09:03:36Z
 
Re : Petit défi : chercher une valeur texte dans plusieurs feuilles puis copier les l

Bonsoir,

je reviens vers vous pour une petite adaptation du code que vous m'avez transmis non pas pour les liens hypertexte mais celui pour la recherche de valeur dans une cellule dans toutes les feuilles du classeur.

Voici le code adapté à mon fichier. Le code fonctionne et copie bien les cellules définies mais j'ai finalement des formules dans les cellules que je copie et j'aimerais ne recopier que les valeurs
J'ai des formules dans Range("C6:C16") mais je voudrais ne copier que les valeurs de cette plage dans mon code au niveau de ma feuil1 Range("B9:B19")

CI dessous le code et ci-joint le fichier.
Je pense que ce sera rien pour vous cette correction et ça me rend fou... 🙂
Merci necore pour votre aide !

Sub toto()
Dim k&, Clef, fl As Worksheet
With Me.[B9]
Clef = Me.[A5].Value
If Not IsEmpty(Clef) Then
.Resize(2, 1) = 0
.Parent.Range(.Cells, .End(xlDown)).Range("B9:B19").Clear
For Each fl In ThisWorkbook.Worksheets
If fl.Name <> Me.Name Then
If fl.[E3].Value = Clef Then
fl.Range("C6:C16").Copy Destination:=.Offset(11 * k)
k = k + 1
End If
End If
Next
End If
End Sub

Cookies
 

Pièces jointes

- 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