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 :

Interdire plus de 11 fois une valeur dans une plage


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    responsable d'équipe
    Inscrit en
    Décembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Interdire plus de 11 fois une valeur dans une plage
    Bonjour

    Dans le tableau ci-joint, j'ai un onglet par mois et pour chaque jour des mois (les plages C6-C175, D6-D175... jusqu'à M6-M175) je souhaiterai que le nombre de cellule comportant la valeur "CA" soit limité au nombre inscrit dans la cellule de la feuille congé!H34 (ici 11fois).

    J'ai essayé par Validation des données, cela marche lorsque j'écris dans chaque cellule mais cela ne bloque pas si je réalise des copier/coller de cellule comprenant la valeur "CA".
    Je pense que le VBA peut m'aider pour réaliser cette limitation sur le plages C6-C175 à la plage M6-M175 de tous les onglets des mois.
    Dans le cas où il y aurait une tentative d'inscription au delà de 11 fois, il y aurait un texte "Nombre maximal de congé annuel atteint" et la tentative serait bloquée.

    Je vous remercie par avance

    Emmanuel
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 365
    Points : 631
    Points
    631
    Par défaut
    Bonjour

    Peut être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.WorksheetFunction.CountIf(Range("C6:M175"), "CA") > 11 Then
    ActiveCell.Delete
    MsgBox ""Nombre maximal de congé annuel atteint""
    End If
    End Sub



    à mettre dans chaque feuille concernée

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    responsable d'équipe
    Inscrit en
    Décembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Bonjour

    Ça ne marche pas correctement car quand je mets le 12ème CA, il reste incrémenté dans le tableau et en plus ça décale les cellules inférieures vers le haut.
    De plus dès que je clique sur une cellule dans mon tableau le message "il y a déjà 11 congé de ce type" apparait et les cellules inférieures de celle que je clique se décalent vers le haut.

    J'ai l'impression que dans le code au 12ème CA mis, la cellule juste en dessous est supprimé et la contrainte de 11 CA maxi est mise pour toute la plage C6:M175 alors que la contrainte devrai être pour chaque colonne C6:C175 puis D6175 jusqu'à M6:M175.

    Merci pour l'essai

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 365
    Points : 631
    Points
    631
    Par défaut
    Re Bonjour

    ou alors ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If ActiveCell.Column > 2 And ActiveCell.Column < 14 Then
     
    zone = Cells(6, ActiveCell.Column).Address & ":" & Cells(175, ActiveCell.Column).Address
    If Application.WorksheetFunction.CountIf(Range(zone), "CA") > 11 Then
    ActiveCell.ClearContents
    MsgBox "Nombre maximal de congé annuel atteint"
    End If
    End If
    End Sub

    J'ai remplacé le .delete par un . clearcontents
    à enlever si pas pertinent.

    le . delete était une bêtise.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    responsable d'équipe
    Inscrit en
    Décembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2017
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Ça marche pas mal, mais cependant si je fais un copier/coller du 12ème il reste incrémenté sur le tableau et pas de message, après par contre le message apparait si je clique sur une cellule de la colonne et si je clique sur un des 12 CA ça supprime le "CA" de la cellule cliquée et du coup on revient à 11.

    Vous êtes très proche du but.

    Merci

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/03/2016, 14h14
  2. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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