Liste de validation limitée à des zones

Bonsoir,

J'ai créé des fonctions pour mettre en place des listes de validation :

Double clic en colonne G = liste de validation

Clic droit en colonne G = suppression de la liste de validation.

Voir les codes de la feuille "grilles"

Contraintes:

Le nombre de grille est variable mais de taille est constante.

Les listes de validation sont en colonne G en dehors des zones en jaune.

Le jaune est utilisé ici juste pour faciliter la compréhension du problème.

Quelle fonction pourrait permettre de limiter les listes de validation aux lignes

5 à 26 pour la grille 1

31 à 50 pour la grille 2

J'ai tenté avec modulo sans y arriver.

Merci pour votre aide.

13lv-limitees.xlsm (20.12 Ko)

Bonjour ddetp88

Je n'ai rien compris... qu'Est-ce que tu cherches à limiter ? qu'Est-ce que tu nommes "grille ", "grille 2" ? et les lignes 5..26... ?

Bonsoir NCC 1701,

Les grilles ou comprendre tableau (tableaux en feuille Grilles)

Le premier tableau (grille) de la ligne 5 à ligne 26 en colonne G reçoit les listes de validation.

etc

Cordialement

(re)

Ok

Et qu'Est-ce qui est différent sur les lignes suivantes 31 à 50 etc...

rien, mais comme tu as pu le constater les cellules en jaunes peuvent recevoir les listes de validation.

C'est ce que je veux éviter.

Cordialement,

(re)

C'est beaucoup plus clair comme ça

Et la solution est encore beaucoup simple que tu ne pourrais le croire... 8)

Tu as écris dans chaque Procédure

Plage1 = Range("G4:G" & [F65000].End(xlUp).Row + 3).Address

Remplace seulement le G4 par G5 et dis moi ce que tu en penses ??

De ton coté fais un double clic en G29

Tu comprends maintenant la difficulté.

(re)

Oui effectivement... trop habitué voir des touts petits bouts de tableaux en guise d'exemple j'en est oublié de faire défiler mon écran...

Alors prenons le problème autrement... Quel est le but de la chose ?

Quel curieux

Un tableau par jour ou seulement trois ou quatre jours par semaine sur une période de quinze jours à un mois.

Ces tableaux sont ensuite analysés pour y relever les noms dans la colonne G en l'occurrence.

L'objectif des listes de validations est d'éviter les fautes de frappe. Les fautes de frappe sont toujours préjudiciables pour la suite d'un dossier.

Merci du temps accordé

cordialement

(re)

En commençant par ordre de priorité

ddetp88 a écrit :

Merci du temps accordé


Ensuite

ddetp88 a écrit :

Les fautes de frappe sont toujours préjudiciables pour la suite d'un dossier.

tout à fait de ton avis les listes de validation sont effectivement une très bonne parade tant pour le dossier que pour l'analyse correct et rapide qui en découle !

Puis enfin

ddetp88 a écrit :

Un tableau par jour ou seulement trois ou quatre jours par semaine sur une période de quinze jours à un mois.

Maintenant vient la question suivante... pourquoi diviser le tableau ?

Une zone d'entête (la zone jaune actuellement mais unique) et un compteur de jour, semaine ou ce que tu veux en regard de chaque ligne faciliterait beaucoup la tâche, tant analyse que développement !

En réalité une impression par tableau.

Maintenant si tu n'as pas de solution, passe la main!

Cordialement,

Bonjour ddetp88

ddetp88 a écrit :

En réalité une impression par tableau.

Tu te compliques la vie... Excel permet de gérer les impressions tout seul, avec entête, pied de page, il y a même la possibilité de définir des lignes à répéter en haut de page, des colonnes à répéter à gauche...

Ton tableau, crois-moi ne sera pas pratique à l'usage !


ddetp88 a écrit :

Maintenant si tu n'as pas de solution, passe la main!

il y a toujours une solution ! je dis juste que tu vas faire (ou faire faire) des tonnes de lignes de code pour quelque chose d'inutile, et qui au cas où tu décide de modifier le nombre de ligne des tes tableaux va se casser la figure !

Bonjour,

Pas bien compris si tu voulais sur toutes les grilles ou juste sur celle double-cliquée.

Sur toutes les grilles :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim pl As Range, i As Long
    If Target.Column = 7 Then
        Cancel = True
        Columns(7).Validation.Delete
        Set pl = [G5]
        For i = 5 To Cells(Rows.Count, 3).End(xlUp).Row Step 26
            Set pl = Union(pl, Cells(i, 7).Resize(22))
        Next i
        pl.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                          xlBetween, Formula1:="=NP"
    End If
End Sub

eric

PS : Et si c'est juste la cellule

if not intersect(target,pl) is nothing then

Bonjour Eriiic,

Merci de t'intéresser au problème qui me bloque.

Dans ta proposition, toutes les cellules se retrouvent avec la liste de validation. Les zones en jaune sont exclues ce qui est bien.

Je souhaite voir la liste de validation dans la cellule qui est double cliquée et uniquement cette cellule.

Dans ma logique, je pensais que Mod aurait pu être une solution car c'est toujours un multiple. Mais voilà, je n'y suis pas arrivé...

Cordialement,

et bien lit le PS ajouté, et la prochaine fois soit clair et complet dans ta question.

C'est vrai que quand on baigne dans le problème depuis un petit moment, on a l'impression de le présenter clairement.

J'ai bien vu ton PS mais je n'ai pas su intégrer cette ligne dans ton code.

Si ça fonctionne pour toi alors installe,STP, le code dans le fichier que je vois comment tu veux faire.

Sinon, je reprends en tentant de formuler le problème autrement.

Tel que j'ai proposé le code, il fonctionne partiellement.

Je veux (en colonne G) qu'en double cliquant dans une cellule, affecter à cette cellule la liste de validation NP.

Sauf que la procédure que j'ai écrite ne se limite pas.

Pour comprendre mon problème, fait un double clic sur une cellule fond jaune. La liste NP y est affectée. C'est ce que je veux éviter.

Est-ce que c'est plus clair pour toi?

Merci pour ton aide.

Bonjour,

il fallait juste ajouter ce test avant de mettre la MFC, ce n'était pas bien dur.

Comme on en sait plus maintenant autant aller au plus simple :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 7 And (Target.Row - 1) Mod 26 > 3 Then
        Cancel = True
        Target.Validation.Delete
        Target.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                              xlBetween, Formula1:="=NP"
    End If
End Sub

Je ne teste plus si on dépasse la dernière ligne ajoute-le si nécessaire.

eric

Bonjour Eriiic,

C'est parfait,

C'était ce bout de code qui me bloqué (Target.Row - 1) Mod 26 > 3

Ca parait effectivement tout "couillon" quand on le voit écrit.

Merci pour ta patience et au plaisir.

Cordialement

Rechercher des sujets similaires à "liste validation limitee zones"