IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche de valeur et msgbox avec le nom de l'onglet [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut Recherche de valeur et msgbox avec le nom de l'onglet
    Bonjour à tous,

    Je sollicite votre aide pour une petite adaptation dans la mesure du possible
    Mon classeur est composé de plusieurs onglets. Chaque onglet représente une fiche de suivi pour divers dossiers. Via ma page principale, j'ai un bouton qui recherche les actions à effectuer (TO DO) parmi tous les onglets et affiche le nombre via une msgbox. Cependant, j'aurais souhaité savoir s'il était possible dans la msgbox de stipuler dans quels onglets il y a une action à effectuer (donc en nommant le noms des différents onglets où il y a le terme "TO DO") afin de ne pas devoir chercher parmi les différents onglets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub Bouton3_Cliquer()
     
    Dim sel As Object
    Dim c As Integer
    Dim f As Integer
    Dim l As Long
    Dim n As Integer
     
     
    n = 0
    For f = 2 To Sheets.Count
    With Sheets(f)
        l = 1: c = 1
        Do
            Set sel = .Cells.Find(What:="TO DO", after:=.Cells(l, c), _
                LookIn:=xlValues, LookAt:=xlPart, _
                SearchOrder:=xlByColumns, _
                SearchDirection:=xlNext, MatchCase:=False)
            If sel Is Nothing Then Exit Do
            If sel.Column <= c And sel.Row <= l Then Exit Do
            c = sel.Column
            l = sel.Row
            n = n + 1
     
            Loop
     
    End With
    Next f
    MsgBox n & " dossier(s) à traiter"
     
    End Sub

    D'avance, je vous en remercie grandement

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 577
    Par défaut
    sel renvoyant la cellule contenant "TO DO" tu peux accéder à la feuille de celle-ci via sel.Parent.Name (tu pourrais aussi lister les adresses des cellules en utilisant sel.AddressLocal(External:=True) (ça donne [nomclasseur]nomFeuille!cellule (ex [classeur1]Feuil01!$A$12)

    Cependant dans ton cas, tu parcours les feuilles, donc tu peux y accéder par .Name il faudrait, juste rajouter un test pour ne pas le répéter plusieurs fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub Bouton3_Cliquer()
     
    Dim sel As Object
    Dim c As Integer
    Dim f As Integer
    Dim l As Long
    Dim n As Integer
    Dim NomsFeuilles as string
    Dim oldn as integer 
     
    n = 0
    For f = 2 To Sheets.Count
    With Sheets(f)
        l = 1: c = 1
        oldn=n
        Do
            Set sel = .Cells.Find(What:="TO DO", after:=.Cells(l, c), _
                LookIn:=xlValues, LookAt:=xlPart, _
                SearchOrder:=xlByColumns, _
                SearchDirection:=xlNext, MatchCase:=False)
            If sel Is Nothing Then Exit Do
            If sel.Column <= c And sel.Row <= l Then Exit Do
            c = sel.Column
            l = sel.Row
            n = n + 1
     
            Loop
           if n> oldn Then
               NomsFeuilles= NomsFeuilles  & .Name & ", "
           End If
    End With
    Next f
    NomsFeuilles=Left(NomsFeuilles, Len(NomsFeuilles)-2) ' pour supprimer le ", " surnuméraire
    MsgBox n & " dossier(s) à traiter" & " dans les feuilles :" & NomsFeuilles
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Que dire à part... Un tout grand merci !
    Pile poile ce que je souhaitais. J'ai juste modifié pour que les noms des onglets soient sous forme de liste [+ Chr(13)] dans la msgbox plutôt qu'en enfilade et c'est parfait.

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Valeurs Graphe offset avec un nom
    Par Takis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2019, 23h15
  2. Réponses: 5
    Dernier message: 28/01/2016, 08h53
  3. [XL-2013] Formule de recherche de valeur par Désignation avec somme
    Par Maxkinder dans le forum Excel
    Réponses: 1
    Dernier message: 04/09/2015, 20h24
  4. Recherche de valeurs en pourcentage avec "Find"
    Par sotomas dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2015, 13h53
  5. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo