Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Calvus
  • 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 !

Calvus

XLDnaute Barbatruc
Bonsoir,

Comment modifier ce code pour faire la recherche sur une cellule sélectionnée ?

Code:
Sub test()
ActiveSheet.Previous.Select
Range("a:a").Find(What:="3900", Lookat:=xlWhole).Activate
         
End Sub

Celui-ci fonctionne, mais j'aimerais remplacer la valeur "3900" par quelque chose du genre ActiveCell. Mais ça plante.

Merci
 
Re : Code Find

Re,

Trouvé ! (pour l'instant...)

Ca marche comme ça.
Code:
Sub test()
Set c = ActiveCell
ActiveSheet.Previous.Select
Range("a:a").Find(c, Lookat:=xlWhole).Activate
End Sub

Bopnne soirée
 
Re : Code Find

Re bonsoir,

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

Merci
 

Pièces jointes

Re : Code Find

Bonjour à toutes et tous,

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).

A+

René
 

Pièces jointes

Dernière édition:
Re : Code Find

Bonjour Double Zéro, Néné06, le forum,

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.

Merci de votre aide
 

Pièces jointes

Re : Code Find

Re-bonjour, bonjour, néné06,

... Vos solutions fonctionnent, mais ça ne m'aide pas à avancer car je n'y comprends pas grand chose. Pourtant j'essaye !...

Les commentaires fournis avec le code sont-ils clairs ?... Je l'espère.

Bon courage et à bientôt 🙂🙂
 

Pièces jointes

Re : Code Find

salut 😀😀 😉😉

petite analyse de texte

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
 
Re : Code Find

Bonsoir,

Double Zéro, merci de tes explications. 🙂
Je vais m'entraîner sur ton code. j'ai déjà mieux assimilé.

Si, merci également. Tes explications sont claires également et bien utiles. 🙂
Idem pour les tests.

J'ai cependant du mal à adapter vos 2 codes dans mon 3ème fichier.
Je cherche toujours, bien qu'un peu moins dans l'obscurité, grâce à vous.
 
Re : Code Find

Bonsoir le forum,

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. 🙂

Bonne soirée.
 
- 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

Réponses
3
Affichages
213
Réponses
2
Affichages
384
Réponses
4
Affichages
548
Réponses
2
Affichages
571
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…