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

Excel Discussion :

rajouter automatiquement une case à cocher lors d'une création de cette nouvelle ligne


Sujet :

Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut rajouter automatiquement une case à cocher lors d'une création de cette nouvelle ligne
    Bonjour à tous,

    Tous mes voeux pour cette nouvelle année au forum de developpez.com.

    J'ai un soucis excel et malgré mes nombreuses lectures, je n'arrive pas à solutionner dans ma cas.

    J'ai un tableau et lorsque j'arrive en bout de ligne, avec TAB, cela me crée une nouvelle ligne.

    Je souhaiterai rajouter automatiquement une case à cocher lors de la création de cette nouvelle ligne. (Case à cocher qui existe sur la ligne 1)
    Je ne sais pas s'il faut passer par une formule ou bien par une macro.

    Dans les 2 cas, je ne sais pas par quel bout m'y prendre. Merci

    Je joins une capture:
    Nom : excel 01.jpg
Affichages : 955
Taille : 14,9 Ko

  2. #2
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    Bonsoir gesualda : Si c'est un tableau structuré la case à cocher vas s'ajouter d'elle même lors de l'écriture dans une cellule.

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Merci Patmicro de m'avoir porté une réponse.

    Qu'appel tu structuré ?
    Ben en fait, c'est ce que je pensais également puisque ma colonne ID s'incrémente automatiquement à chaque nouvelle ligne sans soucis !

    Nom : excel 02.jpg
Affichages : 936
Taille : 12,2 Ko

  4. #4
    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 133
    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 133
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si c'est un tableau structuré la case à cocher vas s'ajouter d'elle même lors de l'écriture dans une cellule
    Sauf à démontrer le contraire, j'ai des doutes quant au fait qu'un bouton "Formulaire" ou ActiveX se propage automatiquement dans un tableau structuré.
    Pour moi, il faut passer par du code VBA
    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

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 552
    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 552
    Par défaut
    Bonjour à tous

    Eviter d'ajouter des objets sur chaque ligne d'un tableau

    Cela alourdit le fichier, ne pose pas seulement la question de l'ajout sur les nouvelles lignes mais aussi celui de leur suppression : la suppression de lignes n'entraînant pas la suppression de la case à cocher

    On peut cocher décocher une cellule par double clic avec quelques lignes de code

    Nommer la colonne concernée : Cocher pour l'exemple

    Mettre la colonne en police Winddings, alignement centré et placer dans le module du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        If Intersect(Target, [Cocher]) Is Nothing Then Exit Sub
        Cancel = True
        If Target.Value = "" Then Target.Value = "ü" Else Target.Value = ""
    End Sub
    On peut ainsi créer plusieurs plages nommées comme Cocher1, Cocher2 etc et modifier le code pour qu'il s'applique à n'importe plage dont le nom commence par Cocher

  6. #6
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Bonjour 78chris,

    Tout d'abord merci de cette réponse. J'ai suivi scrupuleusement vos conseils.

    - nommer ma colonne "Cocher"
    - La plage concerné rajout de la police => Winddings
    - Rajout du code dans le module du classeur.

    Si je comprends bien, en double cliquant sur la cellule, cette dernière doit me faire apparaitre => "ü" . Es ce bien cela ?
    Visiblement j'ai pas du bien tout comprendre.

    Merci d'avance

  7. #7
    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 133
    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 133
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme l'a indiqué Chris, que je salue, il faut mettre la colonne en question en police Winddings et le "ü" va se transformer en V (comme Vu)
    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

  8. #8
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Bonjour Philippe,

    C'est bien ce que j'ai fais. cela n'a pas l'air de fonctionner chez moi. Je dois mal m'y prendre !

    Merci de ta réponse

  9. #9
    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 133
    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 133
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le code proposé par Chris est une procédure événementielle à placer dans le module du classeur (ThisWorkbook)
    Il faut également nommer la colonne dans le gestionnaire des noms

    Pour en savoir plus sur les procédures événementielles
    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

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    D'accord,

    J'ai modifié et cela fonctionne maintenant après relance du fichier.
    Merci beaucoup à tous les deux pour vous être penché sur mon cas.

    Pour Philippe, je vais lire et essayer de comprendre les 2 liens.

    Bonne journée

  11. #11
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Hello vous deux,

    Je voudrais revenir un cours instant sur la formule pour savoir si j'ai bien procédé pour suivre l'idée de Chris, et qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        If Intersect(Target, [Cocher, Cocher1, Cocher2]) Is Nothing Then Exit Sub
        Cancel = True
        If Target.Value = "" Then Target.Value = "ü" Else Target.Value = ""
    End Sub
    Le problème c'est que je n'arrive pas à régler un soucis d'erreur 1004 après la création d'une nouvelle feuille.
    En effet en faisant un double clic sur certaines cellules au hasard, cela me provoque cette erreur alors que le script fonctionne sur la 1er feuille.

    Sans abuser bien sur, comment puis je me débarrassé de ce problème ? Es ce que j'ai mal construit la requete ?

    PS : cela ne ce produit que lorsque je doubleclic sur une cellule de la nouvelle feuille ( je pense du au => Workbook_SheetBeforeDoubleClick)

    Nom : excel03.jpg
Affichages : 901
Taille : 42,7 Ko

  12. #12
    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 133
    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 133
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le problème c'est que je n'arrive pas à régler un soucis d'erreur 1004 après la création d'une nouvelle feuille.
    L'erreur 1004 signifie sans doute qu'il ne reconnait pas les plages référencées dans l'Intersect soit [Cocher, Cocher1, Cocher2] personnellement je ne travaille pas avec ce type de référencement

    Je vous propose une autre approche, sans devoir nommer les plages de cellules à cocher
    Contrainte : Chaque colonne d'un quelconque tableau structuré où doit avoir lieu le pointage doit avoir la même étiquette de colonne (pour mon exemple il se nomme "Pointage")

    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
    17
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
      Const Label As String = "Pointage" ' Nom de l'étiquette de colonne
      Dim ol As ListObject
      Dim n As String
      Dim s As String
      Set ol = Target.ListObject
      If Not ol Is Nothing Then
         n = ol.ListColumns(Target.Column - ol.Range.Column + 1).Name
         If n = Label Then
            If Not Intersect(Target, ol.ListColumns(n).DataBodyRange) Is Nothing Then
               Target.Value = IIf(Target.Value = "ü", "", "ü")
               Cancel = True
            End If
         End If
      End If
       Set ol = Nothing
    End Sub
    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

  13. #13
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Merci Philippe de cette réponse.

    Quel type de référencement dois je utiliser ? Renommer avec des noms différents ?

    J'ai suivi ce tuto =>
    mais qui explique comment procéder un ensemble de cellule renommer. Idem que les explications à Chris !

    Dans mon cas, j'ai plusieurs tableaux à utiliser sur la même feuille. Donc je sais pas trop vers quel genre de VBA m'orienter.

    Merci

  14. #14
    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 133
    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 133
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avec le code que j'ai publié, vous pouvez créer autant de tableau que vous le souhaitez et le double clic ne réagira que si la colonne du tableau a comme nom Pointage soit la valeur de la constante nommée Label (1ère ligne du code)
    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

  15. #15
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 131
    Par défaut
    Philippe,

    Alors chapeau bas. Merci beaucoup, je viens de tester et cela fonctionne très bien et surtout plus d'erreur 1004.
    Je résolu le sujet et je te remercie encore pour ce bout de code.

    A bientot

  16. #16
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 300
    Par défaut Merci
    Citation Envoyé par Philippe Tulliez Voir le message
    Je vous propose une autre approche, sans devoir nommer les plages de cellules à cocher
    Contrainte : Chaque colonne d'un quelconque tableau structuré où doit avoir lieu le pointage doit avoir la même étiquette de colonne (pour mon exemple il se nomme "Pointage")
    [/CODE]
    Bonjour
    super cette astuce, merci
    du coup j'ai testé en mettant dans la colonne "Pointage" la fonction ="¨" pour obtenir un Carré vide (style case à cocher)
    et j'ai remplacé dans le code IIf(Target.Value = "ü", "", "ü") par IIf(Target.Value = "þ", "", "þ") pour avoir la case cochée.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/11/2018, 18h37
  2. Réponses: 5
    Dernier message: 01/10/2015, 23h29
  3. @Id null lors de la création d'un nouvel objet
    Par zuzuu dans le forum Hibernate
    Réponses: 3
    Dernier message: 18/02/2009, 21h15
  4. Réponses: 2
    Dernier message: 16/04/2008, 15h26
  5. Réponses: 2
    Dernier message: 05/11/2007, 14h23

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