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 :

Insertion de 2 commentaires dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut Insertion de 2 commentaires dans une cellule
    Salut,

    Je suis débutant en VBA.

    J'ai un fichier Excel avec deux sheets, sur la sheet 3 je récupère les données se trouvant sur la colonne R de la sheet 1.

    Pour ce qui est de la structure des 2 sheets:

    Dans la sheet 3 de la cell(1,4) jusqu'à la cell(1,97) j'ai un ensemble de clés, ces dernières sont les mêmes que les clés que je pourrais avoir avec la concaténation des cells (k,6) à (k,17) sur la sheet 1.

    Pour le tableau de la sheet 3 j'ai 356 lignes pour 97 colonnes.

    Pour la sheet 1 j'ai 24 colonnes et 3402 lignes. Le nombre des lignes pouvant changé sur cette sheet j’ai une boucle qui s'arrête à la dernière ligne renseignée avec un find qui s'appuie sur la comparaison entre la colonne Y de la sheet 1 et de la colonne C de la sheet 3.

    Dans les cellules de ma sheet 3 je récupère les données de la colonne R de la sheet 1.

    J’arrive à remplir mon tableau comme il faut, mais le problème c’est que je souhaiterais mettre les valeurs de la colonne R correspondant au type 2 en commentaire dans les cellules correspondantes.
    Je souhaite aussi insérer les valeurs temporaires (celle ayant une enddate différente du 31/12/2099 sur la colonne V sheet1) en commentaire.


    Je ne sais pas comment je pourrais introduire ça dans ma 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub test()
    Dim i As Integer, j As Integer, k As Integer
    Dim cle As String, CurrString As String
    Dim FL1 As Worksheet 'Feuille "sheet3"
    Dim FL2 As Worksheet 'Feuille "sheet1"
    Dim c As Range, LigDeb As String
    Dim Dtype As String
       Application.ScreenUpdating = False
    'Instanciation des feuilles de calculs concernées (pour simplifier le code à venir)
         Set FL1 = Worksheets("sheet3")
         Set FL2 = Worksheets("sheet1")
        CurrString = ""
        j = 4
        Application.ScreenUpdating = False
        While FL1.Cells(1, j).Value <> ""
     
            For i = 2 To 360
    'La clé est constituée de la colonne 3 d'une même ligne & de la colonne J de la ligne 1
                cle = FL1.Cells(i, 3).Value & FL1.Cells(1, j).Value
     
    'Recherche de la valeur de FL1.Cells(i,3) dans la colonne F de FL2
                With FL2.Range("Y2:Y" & Split(FL2.UsedRange.Address, "$")(4))
                    Set c = .Find(FL1.Cells(i, 3).Value)
                    If Not c Is Nothing Then
                        LigDeb = c.Address
                        Do
                            k = c.Row
                            CurrString = FL2.Cells(k, 25).Value & FL2.Cells(k, 26).Value
                            If CurrString = cle Then
                               FL1.Cells(i, j) = FL2.Cells(k, 18)
                              'Je récupère le type qui est en colonne C
                               Dtype = FL2.Cells(k, 3)
                               With FL1.Cells(i, j).Font
                              Select Case Dtype
                               Case "type1"
                                   .Bold = True
                                   .ColorIndex = xlAutomatic
                               Case "type2"
                                   .Bold = False
                                   .ColorIndex = 3
                               Case "type3"
                                   .Bold = False
                                   .ColorIndex = 5
                               Case Else
                                   .Bold = False
                                   .ColorIndex = xlAutomatic
                            End Select
                           End With
                        End If
     
    'Cette recherche ne se poursuit que si FL1.Cells(i, 1) a été trouvé
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing And c.Address <> LigDeb
                    End If
                End With
            Next i
    'Ajoute une ligne à FL1
            j = j + 1
        Wend
       Application.ScreenUpdating = True
    End Sub
    Dans le code précedent j'avais affecter par types des couleurs différentes.
    Finalement je pense que ca serait mieu que je mette le type2 en commentaire.
    comment je peux faire ??
    Voir pièce jointe, c'est un petit bout de mon tableau .

    N’hésitez pas à exposer vos idées.

    Merci d’avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Pourrais tu dans ton fichier mettre les commentaire ou tu souhaites les avoir et avec le contenu que tu souhaite obtenir
    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    Merci pour ta réponse Qwazerty,

    en fait ce que je veux faire, c'est au lieu d'insérer normalement les valeurs de type 2 dans une cellule comme ca se fait tout naturellement avec ce code, je souhaite l'insérer en commentaire dans la cellule correspondante...avec un contenu de commentaire : type 2 "valeur"

    je souhaite aussi faire une requete sur la colonne V ou il y a les enddate.dans le cas ou enddate <> 31/12/2099 mettre la valeur (présente dans colonne R sheet1) en commentaire aussi dans la cellule correpondante sheet3...Avec un contenu de commentaire : "valeur" jusqu'à "enddate"

    En fait j'ai laissé tombé la concaténation qui me permettais d'affecter plusieurs valeurs dans les cellules correpondantes puisque ca fesai moche.
    Et puisque les valeurs de type2 et les valeurs temporaires ( enddate<>31/12/2099) ne sont pas très importantes je souhaite les mettre en commentaire dans les cellules correspondates sheet3.

    voila voila, si ce n'est pas clair, dis le moi comme ca j'essaierai de mieux préciser.

    En gros dans le cas de valeurs temporaires ( enddate<>31/12/2099) :
    au lieu d'insérer la valeur dans le cellule correspondante dans le tableau sheet3, le mettre plutot en commentaire dans cette cellule.

    Dans le cas de valeurs correpondants à type2 : faire la meme chose que précédemment


    NB : dans mon code je ne parle pas du critère de temps (colonne V sheet1) à aucun moment, je ne sais pas comment je pourrais l'insérer (en sachant que les valeurs temporaire peuvent concerner les trois types 1,2 et 3)??

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Je dirais en modifiant le case Type2 comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                                Case "type2"
                                    'Ici on met la valeur en commentaire
                                    FL1.Cells(i, j).AddComment "Type 2 : " & FL2.Cells(k, 3).Offset(0, 15)
                                    .Bold = False
                                    .ColorIndex = 3
    A essayer
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 89
    Par défaut
    Merci Qwazerty ca me met le commentaire mais ca me laisse aussi la valeur dans la cellule, je souhaite avoir la valeur juste en commentaire....je ne sais pas ce qui cloche dans mon code....sinon ca correpond à quoi en fait?

    Pour les temporaires, je dois faire quoi à ton avis ?

    Merci d'avance pour ton aide précieuse

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Re
    Comme ça ça ira mieux

    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
                            If CurrString = cle Then
     
                                If CDate(FL2.Cells(k, 22)) = #12/31/2099# Then
                                    'Je récupère le type qui est en colonne C
                                    Dtype = FL2.Cells(k, 3)
                                    With FL1.Cells(i, j).Font
                                        Select Case Dtype
                                        Case "type1"
                                            .Bold = True
                                            .ColorIndex = xlAutomatic
                                            FL1.Cells(i, j) = FL2.Cells(k, 18)
                                        Case "type2"
                                            'Ici on met la valeur en commentaire
                                            FL1.Cells(i, j).AddComment "Type 2 : " & FL2.Cells(k, 18)
                                            .Bold = False
                                            .ColorIndex = 3
                                        Case "type3"
                                            .Bold = False
                                            .ColorIndex = 5
                                            FL1.Cells(i, j) = FL2.Cells(k, 18)
                                        Case Else
                                            .Bold = False
                                            .ColorIndex = xlAutomatic
                                            FL1.Cells(i, j) = FL2.Cells(k, 18)
                                        End Select
                                    End With
                                Else
                                    FL1.Cells(i, j).AddComment "Tmp : " & FL2.Cells(k, 18)
                                End If
                            End If
    Offset(y,x) decale la case pointé par le programme de y lignes et de x colonnes
    ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Offset(1,2).value = "Ici"
    Mettra le mots "Ici" dans la cellule C2

    Je l'ai retiré du programme il n'était pas utile je l'ai intégré a la valeur de cells(k,3+15=18)

    J'ai modifié pour l'histoire de la date aussi
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. existence de commentaire dans une cellule en vba
    Par jazziestan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/11/2009, 15h23
  2. Réponses: 1
    Dernier message: 06/12/2006, 09h22
  3. [html] insertion d 1 image dans une cellule avec taille en %
    Par hijodelanoche dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/01/2006, 00h50
  4. Comment créer un commentaire dans une cellule d'Excel ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2005, 09h23
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26

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