VBA Sélection de plage de cellules sous condition

Fermé
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014 - 14 déc. 2014 à 20:40
 Maurice - 17 déc. 2014 à 11:43
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

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 14/12/2014 à 22:53
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
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
15 déc. 2014 à 07:41
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
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014
16 déc. 2014 à 21:58
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 déc. 2014 à 22:00
On s'est croisés, voir ici
0
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014
15 déc. 2014 à 12:32
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
Bonjour

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

Maurice
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014
15 déc. 2014 à 13:23
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
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
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
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
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014
16 déc. 2014 à 20:05
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 16/12/2014 à 21:52
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
letof40 Messages postés 26 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 décembre 2014
16 déc. 2014 à 22:23
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
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