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 !
Si je mets ce code dans une feuille, fini.... ça plante, malgré tous mes essais et les déclarations.
Je ne trouve pas l'erreur, ou du moins je ne sais pas ce qu'il faudrait corriger.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range, d As Range
Set c = ActiveCell
ActiveSheet.Previous.Select
Set d = Range("a:a").Find(c, Lookat:=xlWhole).Activate
End Sub
Si j'ai bien compris, je propose cette méthode par "Match" (qui est environ 200 fois plus rapide que "Find").
Ce "Match" , en théorie, convient pour toutes les recherches (Alpha,Numéric,Dates).
Merci de vos réponses.
Vos solutions fonctionnent, mais ça ne m'aide pas à avancer car je n'y comprends pas grand chose. Pourtant j'essaye !
J'ai tenté d’interpréter vos codes dans vos fichiers respectifs. Pouvez vous me dire ce qu'il en est ? Trop de nouvelles fonctions ou méthodes pour moi pour être sur de comprendre la démarche.
J'ai mis des commentaires dans les fichiers.
Il faudra que je sois capable de reproduire ces codes, donc les comprendre à minima.
Par ailleurs, je joins un autre fichier plus représentatif de ce que je souhaite, car manifestement il est difficile de procéder par étapes.
J'avais pensé chercher une macro qui me permettrait de trouver une valeur sur un autre onglet, puis chercher des cellules afférentes avec offset (ex: cells.find().offset(0,2), etc.... mais vous m'emmenez d'un coup beaucoup plus loin.
ActiveSheet.Previous.Select sélectionne (active) la feuille précédente donc tu ne dois pas lancer la macro en étant dans le premier onglet ni l'écrire dans la page de code de cette feuille sous peine d'erreur quand les gardes-fous n'ont pas été invités !
Tu lances la macro en étant sur un feuille x
Range("a:a").Find(Chose, Lookat:=xlWhole).Activate recherche la chose dans la colonne A de la feuille x(casse réglée par xlWhole) puis si elle la trouve sélectionne sa cellule sinon, plante.
---------------- Excel ne sait pas chercher ce qui n'existe pas et sélectionner ce qu'il ne trouve pas ! -----------
Pour surmonter l'écueil, il faut ajouter un test (plusieurs instructions possibles
La plus répandue , R étant déclarée en Range : Set R=Range("a:a").Find(Chose, Lookat:=xlWhole)
if Not R is Nothing then R.Select (si ce n'est pas rien je prends !) Else Exit sub (sinon je laisse tomber !)
Pour rechercher la chose* dans la feuille précèdente, celle que tu as activée, li faut le préciser comme par exemple Activesheet).Range("a:a").Find(Chose, Lookat:=xlWhole).Activate
*avec cette formulation, la chose doit exister dans la colonne A pour ne pas être puni !
Une macro passe-partout serait
VB:
Sub test()
If ActiveSheet.Name = "Feuil1" Then Exit Sub 'premier garde-fou
Dim LaChose 'sans précision, recouvre les différents cas
Dim R As Range 'obligatoire
LaChose = "titi" 'ou n'importe quoi
ActiveSheet.Previous.Select 'change d'onglet
Set R = ActiveSheet.[A:A].Find(LaChose, Lookat:=xlWhole) 'cherche Lachose dans la colonne A de l'onglet valide
If Not R Is Nothing Then R.Select 'sélectionne ou sort
End Sub
Néné06, Si, merci pour vos commentaires et explications.
Je reviendrai pour éclaircir certains points qui restent un peu difficile malgré tout.
Mais c'est déjà beaucoup mieux pour moi. 🙂
Double Zéro, merci, c'est super. Je teste, adapte et reviendrai si nécessaire. 🙂
- 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