VBA Sélection de plage de cellules sous condition

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. 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
    1. 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. 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. Contributeur
        On s'est croisés, voir ici
        0
    2. 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
      1. Bonjour

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

        Maurice
        0
        1. 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
          1. 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. 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
          2. 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. 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
          3. Contributeur
            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. 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
          4. 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