Recherche de la position d’une cellule avec une donnée définie

Résolu
mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je recherche un code (VBA) qui me permette de retrouver dans une colonne la cellule ou il y a « fin » pour la N éme fois et mémoriser les coordonnées de cette cellule.

Le paramètre N sera défini dans une variable NOMBRE par exemple.

Pouvez-vous m’orienter vers une solution.

Mercie d’avance

Bien cordialement

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Essaies :
    Option Private Module
    Option Explicit
    Public Sub Utilisation()
    Dim cel As Range
      Set cel = NièmeCel("Fin", 4, Worksheets(1).Columns("D"))
      If cel Is Nothing Then
        MsgBox "La 4ème cellule contenant ""Fin"" n'a pas été trouvée"
      Else
        MsgBox "La 4ème cellule contenant ""Fin"" est " & cel.Address
      End If
    End Sub
    Public Function NièmeCel(s As String, n As Integer, r As Range) As Range
    ' Renvoie la nième cellule contenant la valeur s
    ' Arguments : s                   [in]  Chaine de caractères cherchée
    '             n                   [in]  Numèro de cellule (Nième)
    '             r                   [in]  Plage de la recherche
    ' Retour    : Range               Cellule trouvée ou Nothing
    Dim ctr As Integer
    Dim adr As String
      Set NièmeCel = r.Find(what:=s, LookIn:=xlValues, lookat:=xlWhole)
      adr = NièmeCel.Address
      If Not NièmeCel Is Nothing Then
        For ctr = 2 To n
          Set NièmeCel = r.Find(what:=s, After:=NièmeCel, _
                                LookIn:=xlValues, lookat:=xlWhole)
          If NièmeCel.Address = adr Then
            Set NièmeCel = Nothing
            Exit For
          End If
        Next ctr
      End If
    End Function
    0
    1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Bonjour,

      Après mise en place du code dans mon programme ça fonctionne nickel.

      Un grand merci.

      j'ai juste remplacer la ligne,

      Set cel = NièmeCel("Fin", 4, Worksheets(1).Columns("D")
      )

      Par ,

      Set cel1 = NièmeCel((recherche), (position), Worksheets(1).Columns(co))


      pour utiliser mes variables.

      Bien cordialement
      0
    2. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Bonjour,

      J’ai ajouté une feuille dans mon tableau et depuis le code du post1 ne fonctionne plus ou plutôt il y a l’erreur :

      Variable objet ou variable bloc With non définie (erreur 91)

      Sur : adr = NièmeCel.Address dans la partie Public Function

      Information importante, bien sur je ne trouve pas pourquoi, mais :

      a) L’erreur est là depuis que j’ai ajouté une nouvelle feuille en position 1dans le classeur.

      b) Si je place la nouvelle feuille à une autre position dans le classeur le code fonctionne correctement ???

      Y a-t-il une solution pour faire fonctionner le code même avec ma nouvelle feuille en position 1 dans le classeur ???

      Merci pour l’aide

      Bien cordialement
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Remplaces :
        Set cel = NièmeCel("Fin", 4, Worksheets(1).Columns("D"))
      
      Par :
        Set cel = NièmeCel("Fin", 4, Worksheets(2).Columns("D"))
      
      Ou plutôt par :
        Set cel = NièmeCel("Fin", 4, Worksheets("NomFeuille").Columns("D"))
      
      en remplaçant NomFeuille par le véritable nom de la feuille : la feuille pourra ainsi se trouver n'importe où dans le classeur.

      Cordialement
      Patrice
      0
      1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonjour,

        Encore merci pour la réponse.

        Bien cordialement
        0