• Initiateur de la discussion Initiateur de la discussion mat69002
  • 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 !

mat69002

XLDnaute Nouveau
[Résolu] Recherche par nom

Bonjour, après mes recherches infructueuses, j'ai besoin de votre aide, mes connaissances étant limitées.
J'ai créé 1 macro qui regarde le contenu des cellules de ma deuxième feuille et les recherche parmi les cellules nommées sur la première feuille.
Le problème se pose quand elle ne les trouve pas.
Au bout de la deuxième erreur, j'ai le message : "La méthode range de l'objet global a échoué" sur la ligne "Application.goto ....".

Voici ma macro :
Sub Macro5()
Dim rec As Variant, i As Integer
For i = 1 To 15
rec = Worksheets("Feuil2").Range("A" & i).Value
Sheets("Feuil1").Select
On Error GoTo renvoi
Application.Goto Reference:=Range(Worksheets("Feuil2").Range("A" & i).Value)
ActiveCell.Value = Worksheets("Feuil2").Range("A" & i).Offset(0, 1).Value
renvoi:
On Error GoTo 0
Next i
End Sub

J'espère que vous pourrez m'aider.
Merci d'avance
 

Pièces jointes

Dernière édition:
Re : Recherche par nom

Merci pour votre réponse, mais je vais avoir le cas ou mon titre de ligne et/ou mon titre de colonne ne correspondront pas à la référence de la feuille 2.
Donc, j'avais émis l'hypothèse de renommer la cellule en feuille1 (par exemple, la cellule B8 est renommée ax1m10) et de procéder à une recherche sur la feuille 2 en se basant sur ce nom.
Voilà pourquoi, j'essaye de le faire par les macros.
 
Re : Recherche par nom

Malheureusement je n'ai pas le niveau pour pouvoir vous aider, désolée je passe la main, mais il y a tellement de gens brillants sur ce site que vous aurez très vite une réponse.
Bon courage et bonne nuit,
M
 
Re : Recherche par nom

Salut,

Je vois qu'il y'a toujours des couches tard ...

Tu peux utiliser ce code, testé dans ton fichier 😉
Code:
Sub Macro5()
  Dim Rec As Variant, Lig As Long
  Dim DerLig As Long, VLig As String, VCol As String
  Dim LigF As Long, ColF As Integer
  ' Récupérer la dernière ligne remplie de la feuille 2
  DerLig = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row
  ' Pour chaque ligne
  For Lig = 1 To DerLig
    Rec = Sheets("Feuil2").Range("A" & Lig).Value
    If Rec = "" Then GoTo SuiteBoucle
    ' Valeur de ligne à rechercher
    VLig = Left(Rec, 2)
    LigF = LigFind(VLig)
    ' Valeur de colonne à rechercher
    VCol = Right(Rec, 4)
    ColF = ColFind(VCol)
    ' Si les DEUX valeurs sont différentes de ZERO
    If LigF <> 0 And ColF <> 0 Then
      If Sheets("Feuil1").Cells(LigF, ColF).Value <> "" Then
        MsgBox "Une valeur existe déjà pour : " & Rec
      Else
        Sheets("Feuil1").Cells(LigF, ColF).Value = Sheets("Feuil2").Range("B" & Lig).Value
      End If
    End If
SuiteBoucle:
  Next Lig
End Sub
Function LigFind(VFind As String)
  LigFind = 0
  On Error Resume Next
  LigFind = Sheets(1).Range("A:A").Find(What:=VFind).Row
  On Error GoTo 0
End Function
Function ColFind(VFind As String)
  ColFind = 0
  On Error Resume Next
  ColFind = Sheets(1).Range("2:2").Find(What:=VFind).Column
  On Error GoTo 0
End Function

Voilà 😉
 
Re : Recherche par nom

Merci pour votre réponse.
Mais j'ai toujours un problème : si mon titre de colonne/ligne ne correspond pas, la recherche échoue.
Voilà pourquoi je pensais utiliser les noms de cellule en macros.
Le fichier joint montre un exemple.
 

Pièces jointes

Re : Recherche par nom

Bonsoir mat69002, Bruno, mth,

Voici une autre solution :
Code:
Sub Macro5()
    Dim rec As Variant, i As Integer
    Dim bCell As Boolean
    
    For i = 1 To 15
        rec = Worksheets("Feuil2").Range("A" & i).Value
        
        ' Rechercher la référence dans la feuille Feuil1
        bCell = ChercherCell(rec)
        
        ' La référence est trouvée
        If bCell = True Then
            Sheets("Feuil1").Select
            Application.GoTo Reference:=Range(Worksheets("Feuil2").Range("A" & i).Value)
            ActiveCell.Value = Worksheets("Feuil2").Range("A" & i).Offset(0, 1).Value
        End If
    Next i
End Sub

Function ChercherCell(rec) As Boolean
    Dim nbName As Integer
    
    ChercherCell = False
    
    With ActiveWorkbook
        ' Boucle sur chaque référence du classeur
        For nbName = 1 To .Names.Count
            ' Si la référence est trouvée
            If .Names.Item(nbName).Name = rec Then
                ChercherCell = True
                Exit For
            End If
        Next nbName
    End With
End Function
 
- 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
517
Réponses
6
Affichages
517
  • Question Question
Réponses
6
Affichages
608
Réponses
2
Affichages
370
Réponses
3
Affichages
484
Réponses
2
Affichages
496
Retour