VBA Sélection de plage de cellules sous condition

letof40 Messages postés 26 Statut Membre -  
 Maurice -
Bonjour,

je me heurte depuis pas mal de temps sur une macro que j'aimerais faire, sans succès. Je viens donc solliciter votre aide.

j'aimerais créer une macro qui me sélectionnerait les cellules des colonnes D à G dans les lignes incomplètes uniquement. (en jaune) afin de pouvoir les déverrouiller.

Je peux vous envoyer le fichier si besoin.

Merci d'avance de votre aide, bonne soirée



9 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir,

    Pourquoi veux-tu faire une macro pour ça, la mise en forme conditionnelle le fait très bien
    sélectionne la plage exemple D2:G50 et mise en forme conditionnelle, la formule est
    =NBVAL($D2:$G2)<4
    format et choisir la couleur de remplissage des cellules

    En relisant la demande je pense avoir mal compris, si tes lignes en jaune sont incomplètes, tu veux les verrouiller, mais pour les rendre inaccessible, il faut également protéger la feuille, mais quel intérêt, tu peux en dire plus s'il te plaît

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Pour abonder dans le sens de Mike-31, après avoir créé la mise en forme conditionnelle tu peux appliquer un filtre sur la couleur des cellules des colonnes D à G, ce qui te permettra de les sélectionner facilement pour les déverrouiller.

    A+
    0
    1. letof40 Messages postés 26 Statut Membre
       
      Bonjour,
      j'ai bien fait la partie mise en forme conditionnelle sans pb voici la condition: "=ET(NBVAL($H4:$M4)<6;NBVAL($A4:$G4)=7)" qui s'applique à la plage "$H4:$M13000", ça fonctionne pour colorer les cellules en jaune, mais je ne sais pas les sélectionner dans une macro. Je précise que toutes mes lignes en dessous de la 4 sont des copies de la ligne 4 que je rempli au fur et à mesure des entrées dans mon tableau.
      Merci de ton aide si tu as une piste.
      Bonne soirée
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      On s'est croisés, voir ici
      0
  3. letof40 Messages postés 26 Statut Membre
     
    Bonjour,
    tout d'abord, merci de vos réponse.
    Je m'explique:
    ce que je souhaite, c'est que certaines personnes entrent dans le fichier par le biais d'un MdP et , ça c'est ok, ensuite que leur soit accessible uniquement les cellules des colonnes H à M des lignes incomplètes, les seules qu'il s aient le droit de modifier.
    Je gère les protection / déprotections, mais pas le dévérouillage de ces seules cellules. A la fermeture, je reprotège tout.
    Est un peu plus clair?
    Sinon, la MFC ok, mais comment l'intégrer en macro?
    Merci, bonne journée
    0
  4. Maurice
     
    Bonjour

    Donne au moins un model pour voir ce que tu as fait

    Maurice
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. letof40 Messages postés 26 Statut Membre
     
    Bonjour

    voilà un fichier sans données "sensibles" le mot de passe pour la collecte est c et pour traitement, c'est t .

    https://www.cjoint.com/?0LpnAVDaME3

    tout est comme l'original, sauf les mots de passe de feuille, classeur et vba désactivés

    Merci
    0
  7. Maurice
     
    Bonjour
    a mettre dans un module

    Sub RetourAccuil()
    ' retour à l'accueil
    ActiveSheet.Unprotect
       Range("H5:M" & Rows.Count).Locked = True
          For L = 4 To Range("A" & Rows.Count).End(xlUp).Row
             For C = 8 To 13
                If Cells(L, C).Value = "" Then
                   Cells(L, C).Locked = False
                End If
             Next
          Next
    ActiveSheet.Protect
        UserForm1.Show 1
    End Sub
    

    A+
    Maurice
    0
    1. Letof40
       
      merci Maurice, par contre ça me déverouille aussi les cellules des lignes pleines
      Je ne vois pas ou tu aurais pu mettre la condition qui fait que qd une ligne est pleine on ne la déverouille pas. Peut être pourrais tu m'expliquer.
      Meci en tout cas
      0
  8. Maurice
     
    Bonjour
    j'ai un jouer avec ton fichier

    tu a peux etre des truc a prendre pour toi

    http://cjoint.com/?3LqsTuwBRXh

    A+

    Maurice
    0
    1. letof40 Messages postés 26 Statut Membre
       
      bonjour,
      merci il y a en effet des trucs, par contre j'ai du mal à m'y retrouver. Je vais m'y employer.
      A+
      0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    à tester :
        Dim pl As Range
        Set pl = [D5].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 4, 4).SpecialCells(xlCellTypeBlanks).EntireRow
        If Not pl Is Nothing Then
            pl = Intersect([D:G], pl).Locked = False
        End If

    eric

    En essayant continuellement, on finit par réussir.
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
    1. letof40 Messages postés 26 Statut Membre
       
      merci Eric, je regarderai ça plus tard. En tout cas je ne suis pas du même niveau en VBA, je n'y comprends rien à ce que tu as écris, enfin pas grand chose lol.
      A + bonne soirée
      0
  10. Maurice
     
    Bonjour
    j'ais encore jouer

    faire un clic droit a partir de la colonne H dans la feuille donnée

    http://cjoint.com/?3LrlWIyDhBY

    Aller du courage HI

    A+

    Maurice
    0