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 :

Commenter les cellules d'une plage [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Points : 36
    Points
    36
    Par défaut Commenter les cellules d'une plage
    Bonjour,

    Tout est dans le titre, je voudrais commenter chaque cellule d'une plage.
    Je ne comprend pas bien pourquoi ça ne marche pas.
    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Range("P1137:BH1141")
            .ClearContents
            With .Interior
                .ColorIndex = 13
                .Pattern = xlSolid
            End With
            .AddComment
            With .Comment
                .Visible = False
                .Text Text:="Discordance with a second measure"
            End With
    End With
    Et voilà un autre bout de mon code qui lui est fonctionnel :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    For i = 15 To 60
            For j = 2 To 12806
                If Cells(j, i) < -1 Then
                    With Cells(j, i)
                        .ClearContents
                        With .Interior
                            .ColorIndex = 45
                            .Pattern = xlSolid
                        End With
                        .AddComment
                        With .Comment
                            .Visible = False
                            .Text Text:="Value too low"
                        End With
                    End With
                End If
                If Cells(j, i) > 10000 Then
                    With Cells(j, i)
                        .ClearContents
                        With .Interior
                            .ColorIndex = 50
                            .Pattern = xlSolid
                        End With
                        .AddComment
                        With .Comment
                            .Visible = False
                            .Text Text:="Value too high"
                        End With
                    End With
                End If
            Next
    Next
    Peut-être que ça ne marche que pour une cellule et pas pour une plage... ?
    Merci d'avance pour votre aide !

  2. #2
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Points : 49
    Points
    49
    Par défaut
    dans le code qui ne arche pas tu écrit sur Range("P1137:BH1141")
    et dans le code qui marche tu écrit sur For j = 2 To 12806
    donc dans le premier qui écrit sur l'ensemble de la plage alors que le deuxième tu écrit cellule par cellule

    si tu veut que ca marche fait 2 boucle, une sur la ligne et l'autre sur la colonne

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Peut-être que ça ne marche que pour une cellule et pas pour une plage
    Je viens de tester ton code, effectivement il marche pour une cellule et pas pour une plage

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    J'avais pensé faire ça en derniers recours, je pense (du moins j'espère) qu'on peut commenter les cellules d'une plage sans passer par une boucle.

    Quelqu'un d'autre a-t-il une idée sur la façon de procéder ?

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Sinon ton code avec une boucle :


    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
    18
    19
    20
    21
    Dim MaPlage As Range, Macellule As Range
    Set MaPlage = Range("P1137:BH1141")
     
    For Each Macellule In MaPlage
        With Macellule
            .ClearContents
            On Error Resume Next
            .Comment.Delete  ' J'ai rajouté un delete ici si plusieurs passages.
            On Error GoTo 0
            With .Interior
                .ColorIndex = 13
                .Pattern = xlSolid
            End With
            .AddComment
            With .Comment
                .Visible = False
            '    .Visible = True
                .Text Text:="Discordance with a second measure"
            End With
        End With
    Next Macellule

  6. #6
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Points : 49
    Points
    49
    Par défaut
    c'est pas 2 ligne de code et 0.001 seconde les 30k de ligne géré par l'ordi qui vont t'épuiser ???
    je t'assure que tu a juste a faire 2 for imbriqué l'un dans l'autre et c'est réglé

    (ne croi pas que ce que je di est méchant biensur ^^)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Effectivement ce n'est pas ça qui va m'épuiser, ni épuiser l'ordinateur, mais j'aurais voulu savoir s'il était possible de faire autrement.
    Je me serais par contre volontiers passé de ton commentaire qui n'apporte rien au problème, et ne crois pas non plus que ce que je dis est méchant.

    Je vais faire avec ton code aalex_38 si personne ne trouve la solution.

    Merci pour l'aide.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    J'ai essayé ton code aalex_38, ça bloque sur .Comment.Delete.
    Je trouve ça bizarre... si je l'enlève il commence à faire la première ligne de la plage puis bloque sur .AddComment peu avant de la terminer...

    Bref, je vais passer par des for et des Cells, c'est moins clair mais ça marche bien.

    C'est balot quand même, il me semblait très bien ton code.
    Tant pis.

    Sinon toujours personne pour ma question d'origine ?

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Un exemple, ajouter un commentaire en C4 et le recopier dans une plage ici C23 L32, a adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Range("C4")
        .AddComment
        .Comment.Visible = True
        .Comment.Text Text:="xxxx" & Chr(10) & ""
        .Copy
    End With
     
    Range("C23:L32").PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 01/07/2013, 15h06
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] Comment récupérer les valeurs d'une plage nommée avec le gestionnaire de nom
    Par Mamadou79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2010, 10h50
  4. Comment récupérer le nom de la cellule dans une plage
    Par DubDub dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2009, 12h26
  5. [VBA-E] Effacer les valeurs d'une plage de cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2006, 11h07

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