Rechercher dans plusieurs plages

Bonjour

J'ai créé une plage de recherche

Public Const Plg4 As String = "H6:V6,H31:V31,H56:V56,H81:V81,H106:V106,H131:V131,H156:V156,H181:V181,H206:V206,H231:V231,H256:V256,H281:V281,H306:V306,H331:V331,H356:V356,H381:V381,H406:V406"

Mais celle-ci n'est pas assez longue pour contenir toutes les cellules. Donc j'ai eu l'idée de faire une autre ligne avec la fin de la zone et je mets un ' devant la ligne qui ne m’intéresse plus.

'Public Const Plg4 As String = "H406:V406, etc ....."

Cela marche car j'ai besoin de la première partie en début d'année et de la deuxième partie en fin d'année. Mais ce n'est pas très pratique.

En fait cette zone est appelée par un script dont une partie est :

>>début de script

Select Case Feuille_de_Travail

Case PL6

Set Feuille_Recherche = Sheets(PR6)

Case PL5

Set Feuille_Recherche = Sheets(PR5)

Case PL4

Set Feuille_Recherche = Sheets(PR4)

Case PL3

Set Feuille_Recherche = Sheets(PR3)

End Select

Set Plage_Recherche = Feuille_Recherche.Range(Plg4)

Set Cellule = Plage_Recherche.Find(Cellule_de_Travail.Value, LookIn:=xlValues, lookat:=xlWhole) 'cherche le Sxxx tapé

If Cellule Is Nothing Then MsgBox "Attention la valeur cherchée n'existe pas": Exit Sub 'teste s'il trouve ou pas

PUIS IL Y A L'ACTION A RÉALISER

>>fin de script

Je me dit que le plus simple serait de pouvoir avoir les deux plages actives en permanence et de parcourir les deux plages...

Comment faire ? Je m'y perds un peu ...

Merci

Bonjour RIPcagou le forum

une question bête sans doute pourquoi recherché dans des zones particulières et non purement et simplement dans la feuille??

sans fichier je dis peut-être une bêtise, mais ??

a+

Papou

Re Bonjour Ripcagou le forum

Comment faire ? Je m'y perds un peu ...

oui c'est normal que tu te perdes un peu!!!!

déjà tes variables avec des noms à rallonge ne facilitent pas les choses

moi je vois cela beaucoup plus simple avec simplement une boucle de 6 à xxx pas de 25 puisque c'est ce que tu as

par contre comme tu n'as mis qu'un bout de ton code, bah je t'ai fait un truc qui certainement ne fonctionnera pas

mais avec un fichier ce serait tout de même plus simple !!!!

a+

Papou

Sub ripcagou()
    Dim f As Worksheet,i&,cel as range
    'là bien sur ton début de procédure
    Select Case feuille_de_travail
    Case PL6
        Set f = Sheets(PR6)
    Case PL5
        Set f = Sheets(PR5)
    Case PL4
        Set f = Sheets(PR4)
    Case PL3
        Set f = Sheets(PR3)
    End Select
    With f
        For i = 6 To 606 Step 25
            Set Cel= .Range(.Cells(i, "H"), .Cells(i, "V")).Find(Cellule_de_Travail, , , xlWhole)
            If Not cel Is Nothing Then
                MsgBox "La valeur a été trouvée ligne " & cel.Row & " colonne " & cel.Column, vbCritical, "Trouvée": Exit Sub
            End If
        Next i
        MsgBox "Attention la valeur recherchée n'existe pas", , "Valeur non Trouvée"
    End With
End Sub

une question bête sans doute pourquoi recherché dans des zones particulières et non purement et simplement dans la feuille??

sans fichier je dis peut-être une bêtise, mais ??

Bonjour

L'idée est bonne mais le texte recherché peux se retrouver ailleurs et ne doit pas être pris en compte ...

Je te réponds dans l'autre mail.

Merci

oui c'est normal que tu te perdes un peu!!!!

déjà tes variables avec des noms à rallonge ne facilitent pas les choses

moi je vois cela beaucoup plus simple avec simplement une boucle de 6 à xxx pas de 25 puisque c'est ce que tu as

par contre comme tu n'as mis qu'un bout de ton code, bah je t'ai fait un truc qui certainement ne fonctionnera pas

mais avec un fichier ce serait tout de même plus simple !!!!

Re...

En fait, je ne modifie ce fichier qu'une fois par an et mettre des variable assez longue me permet de savoir immédiatement de quoi je parle.

Si je mets f, je ne saurais pas si je parle de la feuille de travail, de la feuille ou il a la recherche etc ... Au départ, c'est ce que j'avais fait, mais je ne comprenais plus la signification des choses.

C'est pour cela que je mets quasiment tout le temps un commentaire en fin de ligne pour savoir ce que je fais à chaque ligne.

Je ne "code" que deux fichier excel.

J'aimerais bien envoyer le fichier, mais il y a dedans des données nominatives (je suis prof) et le fichier concerne ma progression, mes chapitres, mes séquences ...mais aussi mes élèves...

Donc à moins de purger une partie des feuilles ... A voir ..

Et j'ai peur que ce que j'ai fais soit rébarbatif à lire ...

Par contre, je regrette de ne pas avoir un pro pour analyser mon travail et me conseiller...

Merci

Bonsoir Ripcagou le forum

Si tu n’es pas capable de relire une de tes macros c’est grave!!!

Maintenant de multiplier les variables et de leurs donner des noms à rallonge rend tes codes illisible, c’est pour cela que tu ne peux plus rien comprendre car mettre en set une variable qui elle même dépend d’une variable!!!!

Bref fais comme tu l’entends mais là seule chose qui est sure c’est que pour ta recherche une boucle est parfaitement adaptée et règlera le problème de plage à rallonge (comme tes variables) tout est à rallonge

Sans fichier je ne peux plus rien faire pour toi

A plus

Papou

Coucou

Pour résumer, je travaille en collège. Je peux donc avoir 4 niveaux : 6eme, 5eme, 4eme, 3eme.

Pour chaque niveaux, j'ai 3 feuilles, par exemple :

Planning 6eme

Progression 6eme

Chapitre 6eme

et j'ai une autre feuille avec des données (et d'autres feuilles pour chacune des classes)

"Planning 6eme" va chercher des infos dans "Progressions 6eme" et "Progression 6eme" va chercher des infos dans "Chapitre 6eme".

En fait, il y a 5 ans, quand j'ai commencé mon projet, je me suis vite heurté à des problème de modif de code ...

En effet, si j'écrivais un code pour la feuille Planning 6eme, il fallait que je le modifie pour les feuilles plannings 5eme ... et autre.

Comme je n'ai pas trouvé comment souligner (ou mettre en évidence) une partie de code, c'est vite devenu galère ...

Et donc mes macros sont "basiques et larges" et elles font appel à des "fonctions" mises dans les modules...

Ainsi Je peux refabriquer mes feuilles manquantes (par exemple, depuis deux ans, j'ai supprimé les feuilles 3eme) par un simple copier coller ...

Si tu veux m'aider, je veux bien t'envoyer mon fichier "anonymé" en privé. Contacte moi à cagou.math@gmail.com

Merci

Rechercher des sujets similaires à "rechercher plages"