Recherche de la position d’une cellule avec une donnée définie [Résolu/Fermé]

Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
- - Dernière réponse : mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
- 10 nov. 2016 à 09:11
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
Afficher la suite 

1 réponse

Messages postés
7856
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 décembre 2019
1244
0
Merci
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 -
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 -
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
Patrice33740
Messages postés
7856
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 décembre 2019
1244 -
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
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > Patrice33740
Messages postés
7856
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 décembre 2019
-
Bonjour,

Encore merci pour la réponse.

Bien cordialement