Code VBA insérer un commentaire sous condition

Elisa47

XLDnaute Nouveau
Bonjour le forum,

J'ai un fichier Excel qui comprend 2 onglets : "coupon réponse 1Q2019" et "Feuille2".
Dans l'onglet "coupon réponse 1Q2019" les utilisateurs remplissent les cellules des colonnes C, D, E et F en fonction de leur choix. S'ils veulent participer à une sortie et faire 18 trous, ils inscrivent 1 dans la colonne "18 Trous" (colonne E), s'ils veulent faire 9 trous, ils inscrivent 1 dans la colonne "9 Trous" (colonne F), s'ils veulent participer au repas, ils notent 1 dans la colonne "Repas" (colonne G), et s'ils veulent une golfette, ils notent 1 dans la colonne "Golfette" (colonne H).
Les valeurs des cellules des colonnes E, F et G sont reportées dans l'onglet "Feuille2".
Pour faciliter l'exploitation de ce fichier qui est envoyé à tous les adhérents, je souhaiterai que lorsqu'un adhérent demande une golfette pour faire 18 trous ou 9 trous, à une sortie, une macro, insère un commentaire dans la cellule correspondante de la Feuille2.
Voir le fichier joint.
Merci d'avance pour votre aide.
 

Pièces jointes

  • Exemple.xlsx
    16.3 KB · Affichages: 36

Elisa47

XLDnaute Nouveau
Bonjour CHALET53,

Merci pour ton aide.
Petite précision le commentaire doit être ajouté aux cellules 18T ou 9T, uniquement si une golfette est demandée, c'est à dire s'il y a un "1" dans la colonne "Golfette" de l'onglet "coupon réponse 1Q2019".
Pour simplifier j'ai reporté cette information dans l'onglet "Feuille2", à la ligne 5, avec un "1" sous "18T" ou "9T" si une golfette est demandée.
J'ai collé dans ton code dans le classeur, mais je ne sais pas le modifier, pour que le commentaire soit inséré à la ligne 4 eu lieu de la ligne 5.
Pourrais-tu le corriger STP ?
Merci
 

Pièces jointes

  • Exemple modifié.xlsm
    22.3 KB · Affichages: 17

CHALET53

XLDnaute Barbatruc
Je ne suis pas sûr de comprendre ce que tu veux faire
Mettre sur la ligne 4 le commentaire :eek:k
Je suppose qu'il peut y avoir un autre individu sur la ligne 5 : s'il y a un "1" dans la colonne 18T pour cet individu, il faut mettre le commentaire sur cette ligne également, je suppose
..et ainsi de suite
 

Elisa47

XLDnaute Nouveau
Re-bonjour CHALET53,

Non ce fichier ne sert qu'à une seule personne et donc seules les lignes 4 et 5 de l'onglet "Feuille2" m'intéressent. Chaque membre de l'association reçoit un fichier identique à celui-ci et indique ces souhaits en mettant un "1" dans les sorties de l'onglet "coupon réponse 1Q2019".
Les données des cellules (D4:BN5) sont ensuite copiées et collées dans un fichier général avec tous les membres de l'association et le calendrier des sorties.
Et pour savoir si un joueur veut une golfette pour une sortie, on insère un commentaire dans la cellule qui contient un "1" dans la colonne "18T" ou "9T" de la sortie concernée.

Encore merci pour ton aide.
 

job75

XLDnaute Barbatruc
Bonjour Elisa47, CHALET53,

Avec le fichier du post #1 :
Code:
Sub CommentaireGolfette()
Dim c As Range, c1 As Range, c2 As Range
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
Rows(4).ClearComments 'RAZ
For Each c In Feuil1.[H:H].SpecialCells(xlCellTypeConstants, 1)
    Set c1 = Cells(2, Application.Match(c(1, -5), Rows(2), 0))
    Set c2 = Nothing
    If c1(3, 0) <> 0 Then
        Set c2 = c1(3, 0)
    ElseIf c1(3, 1) <> 0 Then
        Set c2 = c1(3, 1)
    End If
    With c2.AddComment
        .Text "Golfette partagée"
        .Shape.TextFrame.AutoSize = True
        .Shape.Top = c2(2).Top
        .Visible = True
    End With
Next
End Sub
A+
 

Pièces jointes

  • Exemple(1).xlsm
    30.4 KB · Affichages: 39

Pierre111

XLDnaute Nouveau
Bonjour Elisa47, CHALET53,

Avec le fichier du post #1 :
Code:
Sub CommentaireGolfette()
Dim c As Range, c1 As Range, c2 As Range
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
Rows(4).ClearComments 'RAZ
For Each c In Feuil1.[H:H].SpecialCells(xlCellTypeConstants, 1)
    Set c1 = Cells(2, Application.Match(c(1, -5), Rows(2), 0))
    Set c2 = Nothing
    If c1(3, 0) <> 0 Then
        Set c2 = c1(3, 0)
    ElseIf c1(3, 1) <> 0 Then
        Set c2 = c1(3, 1)
    End If
    With c2.AddComment
        .Text "Golfette partagée"
        .Shape.TextFrame.AutoSize = True
        .Shape.Top = c2(2).Top
        .Visible = True
    End With
Next
End Sub
A+
Bonjour, j'ai un problème similaire mais je n'ai réussi à adapter votre code.
Voici un fichier exemple pour montrer mon problème.
En fait, j'aimerais que si la colonne J contient la valeur 2 alors il y ai un commentaire dans la colonne A qui dit "Il y a 2 commandes." Le commentaire doit s'afficher que si la colonne J contient la valeur 2.
 

Pièces jointes

  • Exemple.xlsx
    9.1 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Pierre111,

Voyez le fichier .xlsm joint et cette macro affectée au bouton :
VB:
Sub Commentaire()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    .Columns(1).ClearComments 'RAZ
    For Each c In .Columns(1).Cells
        If c(1, 10) = 2 Then
            With c.AddComment
                .Text "Il y a 2 commandes"
                .Shape.TextFrame.AutoSize = True
                .Shape.Top = c.Top
                .Visible = True
            End With
        End If
    Next
End With
End Sub
A+
 

Pièces jointes

  • Commentaire(1).xlsm
    16.1 KB · Affichages: 8

Pierre111

XLDnaute Nouveau
Bonjour Elisa47, CHALET53,

Avec le fichier du post #1 :
Code:
Sub CommentaireGolfette()
Dim c As Range, c1 As Range, c2 As Range
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
Rows(4).ClearComments 'RAZ
For Each c In Feuil1.[H:H].SpecialCells(xlCellTypeConstants, 1)
    Set c1 = Cells(2, Application.Match(c(1, -5), Rows(2), 0))
    Set c2 = Nothing
    If c1(3, 0) <> 0 Then
        Set c2 = c1(3, 0)
    ElseIf c1(3, 1) <> 0 Then
        Set c2 = c1(3, 1)
    End If
    With c2.AddComment
        .Text "Golfette partagée"
        .Shape.TextFrame.AutoSize = True
        .Shape.Top = c2(2).Top
        .Visible = True
    End With
Next
End Sub
A+
Bonjour, j'ai un problème similaire mais je n'ai réussi à adapter votre code.
Voici un fichier exemple pour montrer mon problème.
En fait, j'aimerais que si la colonne J contient la valeur 2 alors il y ai un commentaire dans la colonne A qui dit "Il y a 2 commandes." Le commentaire doit s'afficher que si la colonne J contient la valeur 2
Bonjour Pierre111,

Voyez le fichier .xlsm joint et cette macro affectée au bouton :
VB:
Sub Commentaire()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    .Columns(1).ClearComments 'RAZ
    For Each c In .Columns(1).Cells
        If c(1, 10) = 2 Then
            With c.AddComment
                .Text "Il y a 2 commandes"
                .Shape.TextFrame.AutoSize = True
                .Shape.Top = c.Top
                .Visible = True
            End With
        End If
    Next
End With
End Sub
A+
Ça marche, merci beaucoup !
 

Discussions similaires

Réponses
22
Affichages
689
Réponses
4
Affichages
401

Statistiques des forums

Discussions
311 720
Messages
2 081 899
Membres
101 834
dernier inscrit
Jeremy06510