recherche dans plusieurs onglets/feuilles

asgold

XLDnaute Nouveau
bien le bonsoir à vous chers internautes.
je sollicite votre aide pour résoudre un petit probleme dans mon code VBA que je n'arrive pas à repérer. peut être que vos lumières pourront m'illuminer;)

voilà, je vous expose mon problème: j'ai un fichier avec plusieurs onglets (chaque onglet est une marque). il faut qu'en saisissant le nom de la marque en A4, excel me recopie le tableau en totalité, en recherchant dans tout les onglets(je dois en avoir une vingtaine). le nom de la marque est indiqué en tête de chaque tableau et sur le nom de l'onglet.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As Byte 'décalre la variable f
Dim li As Byte 'déclare la variable li
Dim ha As Variant 'déclare la variable ha
 
If Target.Address <> "$A$4" Then Exit Sub 'si le changement n'a pas lieu en A4, sort de la procédure
If Target.Value = "" Then Target.Offset(1, 0).Value = "": Exit Sub 'si on efface A4, le tableau est éffacé aussi
 
ha = Target.Value 'définit la variable nc
 
For f = 1 To 30 'boucle 1 : sur 30 onglets
    With Sheets(f)  'prend en compte l'onglet de la boucle

            If .Cells(li, 1).Value = ha Then 'condition : si la valeur de la cellule correspond au numéro édité en A4
                Range("a1:u300").Select
                Selection.Copy
                ActiveSheet.Range("A20").Paste 'copie la feuille en question
                Application.CutCopyMode = False
                GoTo fin 'sort de la procédure via la balise "fin"
            End If 'fin de la condition
 
    End With 'fin de la prise en compte de l'onglet
 
Next f 'prochain onglet de la boucle 1
 
MsgBox "la marque n'existe pas !" 'ce message apparaît si tous les onglets on été vérifiés
 
fin: 'balise
 
End Sub

voilà, merci d'avance pour votre aide précieuse.
en attente de vous lire.

As Gold
 

job75

XLDnaute Barbatruc
Re : recherche dans plusieurs onglets/feuilles

Bonjour à tous,

Asgold, votre macro ne peut fonctionner pour 2 raisons :

1) If .Cells(li, 1).Value = ha : la variable li n'est pas définie
2) Range("a1:u300").Select : pour sélectionner une plage, il faut que la feuille soit d'abord activée...
En fait, essayer de ne pas utiliser Select dans les macros. Ici j'écrirais simplement :

.Range("a1:u300").Copy Destination:=[A20]'attention au point devant Range
GoTo fin' pourquoi pas Exit Sub ?

Dans ce type de copie (sans Paste), inutile d'utiliser : Application.CutCopyMode = False

A+
 
Dernière édition:

asgold

XLDnaute Nouveau
Re : recherche dans plusieurs onglets/feuilles

ok parfait, merci pour vos reponses

Desole GCFRG, mais par sousi de confidentialité je ne peux pas joindre de fichier ( je sais que ce n'est pas evident sans fichier qui illustre ce que nous recherchons).

Job75, si tu devais me corriger mon code quelle serait ta version? (comme ca je suis sur de ne pas faire n'importe quoi :d)
je suis debutant et je ne métrise pas tout à fait le domaine (c'est le moins qu'on puisse dire:rolleyes:), et c'est pour ca que je sollicite votre aide.

merci encore
 

job75

XLDnaute Barbatruc
Re : recherche dans plusieurs onglets/feuilles

Je ferai simple :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim f As Byte, li As Byte
If Target.Address <> "$A$4" Then Exit Sub
If Target.Value = "" Then Target.Offset(1, 0).Value = "": Exit Sub
For f = 1 To 30
If Sheets(f).Cells(li, 1) = Target.Value Then' mais il faut définir li avant
Sheets(f).Range("a1:u300").Copy Destination:=[A20]
Exit Sub
End If
Next
MsgBox "la marque n'existe pas !"
End Sub

A+
 

Discussions similaires

Réponses
6
Affichages
237

Statistiques des forums

Discussions
313 344
Messages
2 097 336
Membres
106 916
dernier inscrit
Soltani mohamed