Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Recherche dans une autre feuille

Petitom42

XLDnaute Nouveau
Bonjour,

Je suis (très très très) débutant en VBA et j'essaie de faire une formule assez complexe que je ne parviens pas à écrire.

J'ai un classeur qui regroupe des implantations de pacemaker depuis 2008 (dans des feuilles qui portent le nom de chaque année).

J'ai une feuille appelée "Suivi" qui regroupe tous les patients implantés via une fonction =SI('2021'!A1<>""; '2021'!A1; "") dans chaque cellule, pour avoir tous les patients dans une liste, mais sans que je puisse en modifier les données, puisque cette feuille est en fait un miroir des autres feuilles.

J'aimerais pouvoir modifier les données directement dans cette feuille, en créant un bouton qui modifie les données dans les feuilles originales.

L'idée de la macro, exécutée via le bouton "Find Me" sur la feuille "Suivi" est la suivante :
- Je sélectionne le numéro d'implantation qui est situé en colonne A de la ligne actuellement sélectionnée
- Je copie ce numéro
- Je le recherche dans toutes les autres feuilles du classeur (sauf dans la feuille "Télécardio" qui est également une feuille "miroir")
- Lorsque que le numéro a été trouvé, je me déplace en colonne J de cette ligne et j'applique un x dans la case jusqu'ici vide
- Je me replace sur la ligne initiale dans la feuille "Suivi"

Je suis désolé, je sais que c'est complexe, j'espère que c'est réalisable...

Je joins une version anonymisée du tableau.

Merci beaucoup par avance !
 

Pièces jointes

  • essai.xlsm
    958.6 KB · Affichages: 12

sousou

XLDnaute Barbatruc
Bonjour
Voici un code que tu affect à ton bouton.
Si j'ai bien compris : va mettre x dans la colonne j de la feuille qui contient le numéro
Sub cherche()
num = ActiveCell.Value
For Each f In ThisWorkbook.Sheets
If Left(f.Name, 1) <> "T" And Left(f.Name, 1) <> "S" Then
With f.Columns(1).Rows
Set lg = .Find(num)

If Not lg Is Nothing Then
'lg.Parent.Activate: lg.Select
lg.Offset(0, 9) = "x"
End
End If
End With
End If

Next
End Sub
 

Petitom42

XLDnaute Nouveau
Bonjour,

Merci beaucoup! C'est génial ça marche super bien !!! Même si je ne comprends pas tout au code

Et qu'est-ce que ça donnerait pour se rendre simplement à la ligne contenant le numéro, sans modifier de données?

Encore merci!
 

Discussions similaires

Réponses
16
Affichages
518
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…