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 :

Comment exécuter une macro de recherche sur des feuilles protégées d'un classeur excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : employé
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Comment exécuter une macro de recherche sur des feuilles protégées d'un classeur excel
    Bonjour,
    voila mon problème, j'ai la macro ci-dessous qui effectue une recherche dans toutes les feuilles de mon classeur, par exemple si je recherche"SA" pour "sacs" elle me trouve ,met en rouge et gras les caractères trouvés et la cellule en jaune et quand j'arrête la recherche ou que la recherche se poursuit sur une autre feuilles, elle me remet les caractères ainsi que les cellules trouvées contenant les caractères à leurs état d'origine. Mais maintenant que j'ai protégés les feuilles afin que juste quelques cellules soit modifiables, cela ne fonctionne plus.
    Donc si une bonne âme pouvais m'aider cela serait super.
    Un grand merci



    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
    38
    39
    40
    41
    42
    43
    Option Compare Text
    Sub RechercheEtCouleur(Mot As String)
    Dim Rng As Range, Sht As Worksheet
    Dim plage As Range, cel As Range
     
     
    For Each Sht In ThisWorkbook.Sheets
     
      If Sht.Name <> "Recherche" Then
     
        Set plage = Sht.Range("B3").CurrentRegion 'range("B3") à changer par la bonne cellule de départ
        For Each cel In plage
          If cel Like "*" & Mot & "*" Then
          'ou       If cel Like "*" & Mot & "*" Then
            With cel.Characters(Start:=InStr(1, cel.Value, Mot), Length:=Len(Mot))
                            .Font.ColorIndex = 3 'colorie en rouge
                            .Font.Bold = True 'met en gras
                 cel.Interior.ColorIndex = 6 'met le fond de cellule en jaune
            End With
            Sht.Activate: cel.Activate
            If MsgBox("Poursuivre recherche ?", vbYesNo) = vbNo Then
     
             Cells.Font.ColorIndex = 0 'remise de la couleur noire
             Cells.Font.Bold = False 'enlever le gras
             Cells.Interior.Color = RGB(75, 172, 198) 'remet couleur intérieur cellule d'origine
     
              Exit Sub
              Else: Sheets("Recherche").Activate
     
            End If
     
          End If
        Next cel
        For Each cel In plage
          cel.Font.ColorIndex = 0 'remise de la couleur noire
          cel.Font.Bold = False 'enlever le gras
          cel.Interior.Color = RGB(75, 172, 198) 'remet couleur intérieur cellule d'origine
     
        Next cel
      End If
    Next Sht
    MsgBox "Il n'y a pas d'autres résultats", vbInformation, "Information"
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    au plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each Sht In ThisWorkbook.Sheets
     
      If Sht.Name <> "Recherche" Then
        Sht.Unprotect
       ......
      Sht.Protect
    End If
    Next Sht
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Si tu protèges une feuille par une instruction VBA, tu peux préciser le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserInterFaceOnly :=True
    Dans ce cas la protection ne concerne que l'IHM et n'empêche pas l'exécution des modifications demandées par le code.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  4. #4
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : employé
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    là je ne comprend pas très bien comment mis prendre car je ne suis pas un pro et là j'avoue je suis un peu perdu(IHM,UserInterFaceOnly :=True).comment devrais-je mis prendre pour appliquer ce code et ou le mettre ,comment le paramètrer.
    Merci du soutien

    Christophe

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Ce n'est pas bien compliqué.
    Si tu as protégé la feuille par la commande utilisateur (celle du menu), tu otes cette protection.
    Tu écris cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub subWorksheetProtect()
    ThisWorkbook.Worksheets("NomFeuille").Protect Password:="MonMotDePasse", UserInterfaceOnly:=True
    End Sub
    En remplaçant le nom de la feuille et le mot de passe.
    Tu exécutes cette procédure qui va de nouveau protéger la feuille.

    Tu peux maintenant exécuter la procédure utile (celle qui marche sans protection) et qui devrait maintenant marcher pareil avec cette protection-là.

    Sinon, tu prends la méthode de Casefayere.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : employé
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci à vous deux
    Je vais essayer tout ça

    Christophe

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2014, 16h07
  2. Solution simple pour développer ou réutilise une fonction de recherche sur des BDs
    Par geforce dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/04/2010, 19h12
  3. Réponses: 3
    Dernier message: 11/10/2008, 13h32
  4. Réponses: 3
    Dernier message: 09/05/2007, 11h43

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