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 :

Macro pour compter [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut Macro pour compter
    Bonjour,

    ma demande va paraître simple pour certain mais j'aimerais faire une macro dans mon fichier Excel.

    Je vous explique, je voudrais que lorsque quelqu'un remplisse le tableau avec les points forts ou points faibles, une macro compte les croix ou autre chose (certains vont mettre en majuscule ou d'autres trucs donc faudrait pas restreindre), et par exemple si les utilisateurs terminent la partie 1, et commencent à remplir la partie 2 avec un point fort ou point faible, s'il ont tous rempli dans la partie 1=> ok; mais s'il manque des croix, la macro ferait apparaître un message disant "attention vous n'avez pas complété tous les points. Vérifiez que vous ayez bien tout rempli avant de passer à la partie suivante!".
    Voilà, pour la première partie, il y aurait 7 croix à avoir, 12 pour la deuxième,etc. parce que vous imaginez bien qu'ils ne peuvent pas mettre à la fois des points forts et des points faibles.

    J'espère avoir été assez clair, je vous joins un fichier.

    Je vous remercie par avance pour l'aide que vous pourrez m'apporter.

    P.S : Je préférerais une macro plutôt qu'une validation parce que j'en ai déjà mis une dans mon vrai fichier (mais confidentiel) pour éviter qu'ils remplissent à la fois les points forts et points faibles et je ne pense pas qu'on puisse mettre 2 validations sur une même cellule.Macro.xlsx

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Pour la plage B10:B21, en validation ceci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NBVAL($B$2:$C$8;C10)=7
    a adapter pour chaque colonne et chaque partie

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    P.S : Je préférerais une macro plutôt qu'une validation parce que j'en ai déjà mis une dans mon vrai fichier (mais confidentiel) pour éviter qu'ils remplissent à la fois les points forts et points faibles et je ne pense pas qu'on puisse mettre 2 validations
    Si tu sélectionnes Personnalisation dans la liste Autoriser et dans les limites du nombre d'arguments des formules ET et OU tu peux placer autant de règles de validation que tu le souhaites. Seule la combinaison avec une liste déroulante n'est pas possible.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Si tu sélectionnes Personnalisation dans la liste Autoriser et dans les limites du nombre d'arguments des formules ET et OU tu peux placer autant de règles de validation que tu le souhaites. Seule la combinaison avec une liste déroulante n'est pas possible.
    Lors de mes essais, bizarrement le ET ne marchait pas : Philippe peux-tu vérifier de ton côté.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut Validation
    Ce que vous me dites est très juste mais c'est vrai que j'aurais préféré une macro en fait pour avoir 2 messages différents : un s'ils mettent 2 croix sur la même ligne en point fort et en point faible et un autre s'il ont oublié des points à remplir quand ils comment l'autre partie. Si je fait une formule avec et ou j'aurais le même message pour les deux cas.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour Chris,
    Lors de mes essais, bizarrement le ET ne marchait pas : Philippe peux-tu vérifier de ton côté.
    Est-ce que le problème ne provient pas de la référence relative à C10 ?

    J'ai testé avec un ET mais comme je ne sais pas ce que tu voulais placer comme 2ème argument, j'ai mis n'importe quoi
    Cela fonctionne sauf qu'évidemment la référence à C10 se déplace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(NBVAL($B$2:$C$8;C10)=7;NBCAR(B2)=1)
    Voici un autre exemple où l'on empêche d'introduire une valeur dont le nombre de caractères serai différent de 3 et une valeur identique sur la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(NBCAR(A2)=3;NB.SI($A$2:$A$100;A2)<2)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Voici un petit code qui permet de ne cocher qu'une seule case avec n'importe quelle valeur, voire une phrase
    et interdit de commencer la deuxieme partie du tableau si la premiere n'est pas completer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim KeyCells As Range
     valeur = Target.Value
     ' La variable KeyCells contient les cellules qui déclencheront
     ' une alerte si elles sont modifiées.
     Set KeyCells = Union(Range("d2:e8"), Range("d10:e15"))
     
     If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
            If Target.Column = 4 And valeur <> "" Then Cells(Target.Row, 5) = ""
            If Target.Column = 5 And valeur <> "" Then Cells(Target.Row, 4) = ""
     
        If Target.Row >= 10 And Target.Row <= 15 Then
        If Application.CountA(Range("d2:e8")) < 8 Then MsgBox " vous devez finir de remplir la premiere partie du tableau"
        End If
     End If
     End Sub
    Images attachées Images attachées  

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    RE
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour Chris,

    Est-ce que le problème ne provient pas de la référence relative à C10 ?

    J'ai testé avec un ET mais comme je ne sais pas ce que tu voulais placer comme 2ème argument, j'ai mis n'importe quoi
    Cela fonctionne sauf qu'évidemment la référence à C10 se déplace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(NBVAL($B$2:$C$8;C10)=7;NBCAR(B2)=1)
    Voici un autre exemple où l'on empêche d'introduire une valeur dont le nombre de caractères serai différent de 3 et une valeur identique sur la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(NBCAR(A2)=3;NB.SI($A$2:$A$100;A2)<2)
    Sorry, ma question était effectivement floue !
    J'avais testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(NBVAL($B$2:$C$8)=7;C10="")
    dans la colonne B de la seconde partie

  9. #9
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 14
    Par défaut Re : Macro pour compter
    Merci Keygen08 !

    C'est exactement ce que je voulais. J'ai réussi à compiler les bouts de codes qui me fallait pour étendre la macro à toutes les parties en dupliquant les parties de setKeycells à End If afin d'avoir un seul PrivateSub End Sub pour éviter les bugs de nom. Par contre, je me suis mis en worksheet selectionchange, je préfère que le message apparaisse dès le clique sur la cellule. J'ai également étendu le target row à toute la plage de la partie suivante pour que si quelqu'un ne rentre pas les données dans l'ordre le message apparaisse quand même.

    Ce topic est donc résolu ! Merci à tous pour vos propositions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Tableur] Pb dans macro pour compter les couleurs
    Par fransix dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 27/06/2013, 19h12
  2. [XL-2010] MACRO pour compter lignes renseignées d'une feuille sans tenir compte du filtrage auto
    Par langeard dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2012, 18h06
  3. Réponses: 8
    Dernier message: 20/06/2012, 15h07
  4. [XL-2007] MACRO pour compter le nombre des fichiers sur le serveur FTP
    Par kinkichin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2011, 18h09
  5. Réponses: 1
    Dernier message: 10/02/2010, 14h08

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