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 Subune 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