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 :

Copier/Coller Commentaires sans passer par le presse papier. [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Sans suite à de graves pb de santé
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans suite à de graves pb de santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Copier/Coller Commentaires sans passer par le presse papier.
    Bonjour,

    Comme écrit dans l'intitulé, je voudrais faire un "Copier/Coller" de commentaires d'un ensemble de cellules Classeur1-Feuil1 vers Classeur1-Feuil2 sans passer par le presse papier afin d'optimiser l'exécution.

    J'ai trouvé cette solution :

    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
    Sub Z_Copie_Commentaire_01()
     
        Dim Rng As Range, Cmt As Object
     
        For Each Rng In Worksheets("Feuil1").Range("C4:F12").Cells
            If Worksheets("Feuil1").Cells(Rng.Row, Rng.Column).Comment Is Nothing Then
                ' Pas de commentaires à copier
            Else
                Set Cmt = Rng.Comment
                Worksheets("Feuil2").Cells(Rng.Row + 1, Rng.Column + 1).ClearComments
                Worksheets("Feuil2").Cells(Rng.Row + 1, Rng.Column + 1).AddComment (Cmt.Text)
            End If
        Next
     
    End Sub
    Cette solution répond bien à ma problème qui est le "Copier/Coller" sans l'utilisation du presse papier. Par contre, les commentaires copiés dans le Classeur1-Feuil2 n'ont pas conservés la mise en forme qu'il y a dans le Feuil1.
    Y a t'il une solution pour faire la copie de commentaire d'une cellule à une autre en conservant la mise en forme du commentaire et bien sur sans l'utilisation du presse papier.

    En attendant la solution si il y a solution, je me suis rabattu sur le code ci-dessous qui malheureusement utilise le presse papier mais par contre respecte le mise ne forme du commentaire lors de la copie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Z_Copie_Commentaire_02()
     
        Application.ScreenUpdating = False
     
        Worksheets("Feuil1").Range("C4:F12").Copy
        Worksheets("Feuil2").Range("D5").PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
     
        Application.CutCopyMode = False
     
    End Sub

    Au plaisir de vous lire,
    Jean-Michel

  2. #2
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Salut,

    Si par "mise en forme du commentaire", tu entends le format du rectangle qui le contient, tu peux retrouver celui-ci dans la collection "Comment".

    Je m'explique :
    - l'objet Comment a une propriété Shape
    - Cet objet Shape a une propriété Name
    - Quand on crée un commentaire, l'objet Shape associé est automatiquement créé et s'incrémente par défaut pour chaque nouveau commentaire (Comment 1, Comment 2,... Comment x). Sauf erreur de ma part, cette propriété Name est d'ailleurs en lecture et en écriture (donc peut être modifiée a posteriori)
    - Dès lors que tu connais le nom du Shape associé à chacun de tes commentaires de la feuille source, tu peux récupérer ses propriétés, par exemple pour sa couleur de fond via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CouleurFond = Worksheets("Feuil1").Shapes("Comment 2").Fill.Forecolor
    puis l'affecter au Shape nouvellement créé (suite au AddComment) sur la Feuil2
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    honnetement je ne sais ce que tu gagne a ne pas le faire avec copy paste
    cependant tiens un exemple qui copie le comm de B2 en D13
    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
    Sub copiecomm()
        Dim com As Comment, combase As Comment, i
        With ActiveSheet
            If Not .Range("D13").Comment Is Nothing Then .Range("D13").Comment.Delete
            Set com = .Range("D13").AddComment
            Set combase = .Range("B2").Comment
            With com
                .Text Text:=combase.Text
                .Visible = combase.Visible
                .Shape.Width = combase.Shape.Width    'meme largeur
                .Shape.Height = combase.Shape.Height    ' meme hateur
                com.Shape.Fill.ForeColor.RGB = combase.Shape.Fill.ForeColor.RGB    ' meme couleur de fond
                For i = 1 To Len(combase.Text)
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Name = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Name
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Size = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Size
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Bold = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Bold
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Italic = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Italic
                    'la couleur est diferente dans le resultat ,je ne comprends pas pour quoi
                    '.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Color = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Color
                Next
            End With
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Sans suite à de graves pb de santé
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans suite à de graves pb de santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Merci Patrick de ta réponse. Pourquoi ne pas utiliser le Copy Paste, car à tord ou à raison, j'ai beaucoup lu sur des forums y compris celui ci quand on utilise VBA il fallait mieux éviter le Select. donc ma question du "copier-coller" sans passer par le presse papier.

    J'ai mis en place le code que tu proposes et effectivement, reste le problème de la couleur qui est différente dans le résultat du copier. Egalement un autre problème, quand il y a du texte souligné, malgré avoir rajouter une ligne avec le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Underline = CmtInitial.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Underline
    Le commentaire copié n'est plus souligné.


    Si des personnes ont une solution pour ces deux problèmes qui restent, je suis preneur :
    - Couleur qui n'est pas transférée lors du copie
    - Texte souligné qui n'est pas transféré lors du copie

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Merci Patrick de ta réponse. Pourquoi ne pas utiliser le Copy Paste, car à tord ou à raison, j'ai beaucoup lu sur des forums y compris celui ci quand on utilise VBA il fallait mieux éviter le Select. donc ma question du "copier-coller" sans passer par le presse papier.
    Dans le 2e code que tu mets dans ton premier message, il n'y a aucun Select... donc pourquoi pas l'utiliser?
    En principe, il est mieux de ne pas utiliser les Select/Selection, mais quelquefois il peut arriver qu'on ne puisse s'en passer...
    MPi²

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    oui c'est bizarre chez moi aussi

    c'est quand meme un comble avec une astuce a deux balles je te recupere le commentaire formaté en html
    si tu sais jouer avec le dom html tu devrais trouver ton bonheur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Set cel = Cells(2, 2)
    With CreateObject("htmlfile")
    .body.innerhtml = Replace(Replace(Replace(Replace(cel.Value(xlRangeValueXMLSpreadsheet), "Comment", "SPAN"), "ss:Data", ""), "html:", ""), ":", "")
    '.body.innerhtml = .getelementsbytagname("span")(0).innerhtml:
    Set span = .getelementsbytagname("span")(0)
    Set Font = span.getelementsbytagname("FONT")
    For i = 0 To span.Children.Length - 1
    texte = texte & span.Children(i).outerhtml
    Next
    Debug.Print texte
    End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par Baluteaud Voir le message
    Bonjour,

    Comme écrit dans l'intitulé, je voudrais faire un "Copier/Coller" de commentaires d'un ensemble de cellules Classeur1-Feuil1 vers Classeur1-Feuil2 sans passer par le presse papier afin d'optimiser l'exécution.[...]
    Ca veut dire quoi, optimiser l'exécution? Autrement dit, pourquoi ce collage spécial ne te convient-il pas? Il a quand même été prévu pour cela et cela m'étonnerait que l'on puisse trouver plus rapide ou efficace?

    Passer par du html comme proposé par Patrick me semble être de la plus haute fantaisie... surtout que ça ne le recopie pas. Après, il faut encore le code pour le repousser dans la cellule cible. Je doute que ce soit plus efficace que ce qu'Excel a prévu...

    Citation Envoyé par patricktoulon Voir le message
    P'tain. Ce code est inutilisable lorsque l'on a Option Explicit! Est-ce si difficile de coder proprement?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Salut,

    je partage le même avis ! (post #7, n'ayant pas regardé le code)                 Much ado about nothing

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Sans suite à de graves pb de santé
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans suite à de graves pb de santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Re: Pierre
    Bonsoir Pierre,

    Merci pour ta réponse. Je débute en VBA et ce que je n'arrive pas à faire avec Excel, je me lance avec cet outils VBA que je découvre et apprends à travers sites et forums. J'ai beaucoup lu que le "Select" en VAB était plus ou moins à bannir. A tors ou à raison, je ne serais me prononcer car vraiment trop débutant.

    Ci-après, un extrait de mon code, et dans ces quelques lignes de VBA, il s'avère que c'est le Copy/Paste qui prend le plus de temps d'ou cette question du Copier/Coller sans passer par le presse papier. Mais une fois de plus, je prends vos remarques comme positive pour que je puisse progresser.

    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
        While i <= 479
            Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("I" & i & ":K" & i + 6 & "").Copy _
                Destination:=ThisWorkbook.Worksheets("Données_Semaines").Range("I" & i & "")
     
            Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("M" & i & ":N" & i + 6 & "").Copy _
                Destination:=ThisWorkbook.Worksheets("Données_Semaines").Range("M" & i & "")
     
            Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("Q" & i & ":U" & i + 6 & "").Copy _
                Destination:=ThisWorkbook.Worksheets("Données_Semaines").Range("Q" & i & "")
     
            Set Rng = Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("P" & i & ":P" & i + 6 & "")
            ThisWorkbook.Worksheets("Données_Semaines").Range("P" & i & "").Resize(Rng.Rows.Count, Rng.Columns.Count).Cells.Value _
                = Rng.Cells.Value
     
            Set Rng = Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("V" & i & ":W" & i + 6 & "")
            ThisWorkbook.Worksheets("Données_Semaines").Range("V" & i & "").Resize(Rng.Rows.Count, Rng.Columns.Count).Cells.Value _
                = Rng.Cells.Value
     
            Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("P" & i & ":P" & i + 6 & "").Copy
            ThisWorkbook.Worksheets("Données_Semaines").Range("P" & i & "").PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
     
            For Each c In Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines").Range("P" & i & ":P" & i + 6 & "")
                If c.Hyperlinks.Count > 0 Then
                    With ThisWorkbook.Worksheets("Données_Semaines")
                        .Hyperlinks.Add Anchor:=.Range(c.Address), _
                        Address:=c.Hyperlinks(1).Address
                    End With
                End If
            Next c
            i = i + 9
        Wend
    Je dois transférer des informations d'un classeur A feuillet x vers un classeur B feuillet y pour ensuite effectuer des traitements spécifiques sur le classeur B. Il y a beaucoup d'informations à transférer d'ou l'utilisation d'une macro pour effectuer ce travail.

    Au plaisir de te lire et surtout d'avoir des bons conseils.
    Jean-Michel

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    j'ai pas dis qu'il fallait le faire en html je dis simplement qu'en html je recois les données correctes ,tandis qu'avec l'analise caracteres par caracteres ce n'est pas le cas
    et la!!! je n'ai pas de solution car l'erreur de couleur et du underline est injustifiée
    a moins que certaine propriétés ne soit pas analisables dans les commentaires ,
    au quel cas walouh walouh!! le html ne sera plus de la fantaisie
    ou copy paste
    voila !!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Et ça nous avance à quoi de savoir qu'on peut le récupérer en html? Surtout si on ne sait rien en faire après?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir Pierre Fauconnier
    moi je sais faire
    j'ai donner un exemple pour un demandeur dans mois dernier et cela en vis et versa je vais essayer de retrouver le post
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Je ne comprends pas bien à quoi te servent tes boucles, et encore moins la boucle dans la boucle pour les liens hypertextes. Tu pourrais également passer application.screenupdating = false en début de macro (bien que je ne vois pas en quoi cela impacterait la copie des commentaires. Il serait intéressant que tu nous dises comment tu as remarqué que c'est la copie des commentaires qui pose problème. Dans ces commentaires, c'est quelques mots ou c'est la bible à chaque fois?

    Car le code suivant est presqu'instantané sur mille lignes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TestComment()
      Range("a1:a1000").Copy
      Range("g1").PasteSpecial xlPasteComments
    End Sub
    Tu aurais intérêt à utiliser des objets Worksheet pour rendre ton code plus lisible. Si j'ai bien compris ton souhait, tu pourrais t'inspirer de ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub PersonalCopy()
      Dim wsSource As Worksheet
      Dim wsTarget As Worksheet
     
      Set wsSource = Workbooks("Vélo_" & Annee_Saisie & " - Old.xls").Worksheets("Données_Semaines")
      Set wsTarget = ThisWorkbook.Worksheets("Données_Semaines")
     
      wsSource.Range("i1:k485").Copy Destination:=wsTarget.Range("i1")
      wsSource.Range("m1:n485").Copy Destination:=wsTarget.Range("m1")
     
     
     
    End Sub
    Ce qui serait intéressant, c'est que tu nous dises en français ce que tu souhaites réaliser, sans essayer de le traduire en VBA. Nous pourrions alors t'aiguiller vers la meilleure réponse.

    Essaie également de copier les commentaires en Excel sur l'ensemble de la plage concernée pour voir si cela met du temps.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    bonsoir Pierre Fauconnier
    moi je sais faire
    j'ai donner un exemple pour un demandeur dans mois dernier et cela en vis et versa je vais essayer de retrouver le post
    Je n'ai pas dit que tu ne savais pas le faire. Mais ici, tu l'affiches dans la fenêtre d'exécution. Ca fait une belle jambe à notre ami débutant. Tu crois qu'il va pondre le code tout seul pour réinjecter le code html?

    Il me semble plus pertinent d'essayer de savoir pourquoi la copie de ses commentaires est si lente.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    avec copy paste si c'est lent c'est qu'il y en a beaucoup je vois que ca

    a lire pour le demandeur apartir de ce poste
    quand se sera compris je ferait une adaptation pour les commentaires puisque je l'ai le commentaire en html
    https://www.developpez.net/forums/d1...t/#post9902287

    vers la fin je montre le vis et versa pour toute les propriété text

    honnetement je sais c'est un peu fort mais si il ne veux absolument pas utiliser le presse papier(copy/paste) etant donné les meprise de couleurs et certaine propertie du font je connais pas d'autre solution
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Sans suite à de graves pb de santé
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans suite à de graves pb de santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Re Pierre et Patrick
    Bonjour Pierre, Patrick,

    Merci beaucoup pour votre contribution et de m'aider à progresser.

    Par contre les Garçons, je trouve vos échanges pas très courtois. J'ai seulement posé une question, probablement mal à droite parce que débutant. Je ne voulais pas déchaîner des échanges comme vous l'avez fait. Bref, j'ai mis en pièce jointe un document pour expliquer un peu plus en détail ce que je veux faire. Si vous avez quelques instant vous pouvez le consulter. Pierre, dans ce document, je réponds à tes questions.

    Avec tout ce que j'ai compilé de vos réponses, le "Copier/Coller" de l'ensemble de cellules d'un "Classeur A Feuillet x" vers un "Classeur B Feuillet y" se passe parfaitement bien et plus de problème de temps d'exécution. Donc, c'est cela qu'il faut retenir, le coté positif des échanges qui m'ont permis de progresser et je vous en remercie.

    Pierre, si tu l'acceptes, je voudrais bien que tu répondes et sans aucune polémique StP comment effectuer la copie d'un commentaire d'un cellule X vers une cellule Y en code VBA et surtout en respectant la mise en forme du commentaire. Ci-dessous, le code que Patrick a fourni avec les deux points négatif qui ne fonctionnent pas : la partie couleur et le souligné. C'est vraiment une question ou "exercice d'école" et ce serait vraiment sympa d'avoir une réponse. Réponse qui peut être : Impossible en code VBA.

    Au plaisir de te lire.
    Jean-Michel

    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
    Sub copiecomm()
        Dim com As Comment, combase As Comment, i, j
        With ActiveSheet
            If Not .Range("D13").Comment Is Nothing Then .Range("D13").Comment.Delete
            Set com = .Range("D13").AddComment
            Set combase = .Range("B2").Comment
            com.Shape.Fill.ForeColor.RGB = combase.Shape.Fill.ForeColor.RGB     ' Même couleur de fond
            With com
                .Text Text:=combase.Text
                .Visible = combase.Visible
                .Shape.Width = combase.Shape.Width                              ' Même largeur
                .Shape.Height = combase.Shape.Height                            ' Même hateur
                For i = 1 To Len(combase.Text)
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Name = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Name
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Size = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Size
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Bold = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Bold
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Italic = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Italic
                    ' La partie souligné du texte n'a pas été reporté dans le résultat du commentaire copié, je ne comprends pas pourquoi !
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Underline = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Underline
                    ' La couleur est différente dans le résultat du commentaire copié, je ne comprends pas pourquoi !
                    .Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Color = combase.Shape.TextFrame.Characters(Start:=i, Length:=1).Font.Color
                Next
            End With
        End With
    End Sub
    Images attachées Images attachées

  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ta question n'était pas maladroite, elle a probablement sa raison d'être.

    Quant au manque de courtoisie, s'il était avéré, il témoigne probablement d'une certaine fatigue à voir des réponses ineptes et incomplètes qui, en plus, ne répondent pas au problème posé puisque le problème posé n'a manifestement pas été compris par la personne qui répond.

    Il s'avère en effet que la lenteur n'était pas causée par la copie des commentaires, et il semble évident même à un néophyte qu'un code VBA, mal fagoté qui plus est, ne sera jamais plus rapide que la manoeuvre proposée par Excel (compilée donc plus rapide, et probablement conçue par des gens qui l'ont testée et optimisée).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pour répondre à ta demande, je voudrais revenir à ce qui, pour moi, est la bonne utilisation d'un commentaire.

    Soit le commentaire concerne un aspect métier, et il a alors peut-être sa raison d'être de façon ponctuelle sur une cellule pour fournir une explication sur la valeur qui s'y trouve. Dans ce cas, nul besoin que cela soit recopié ailleurs. Perso, je préfèrerais dans ce cas que le commentaire figure dans une cellule à côté de la cellule concernée, de façon à pouvoir voyager avec et être prise en compte lors de recopies, déplacements, transferts, ...

    soit le commentaire concerne Excel (explication de formule, explication sur la saisie à réaliser, ...) et, là encore, il n'a pas besoin d'être recopié. S'il concerne toutes les cellules d'une colonne d'une table, il doit alors se trouver sur la cellule d'entête de la colonne et non sur chaque cellule (penser à la personne qui va utiliser le tableau et qui va voir apparaître le même commentaire sur chaque cellule de la colonne).

    Dans tous les cas, décorer ce commentaire avec certains mots en couleurs et/ou en gras et/ou en italique et/ou... n'est à mon avis pas pertinent. La preuve en est que la version 2016, par exemple, ne permet pas de colorer certains mots du commentaire.

    Il me semblerait donc pertinent de revoir ton ergonomie, la raison d'être des commentaires et la conception de ton classeur de façon à soit utiliser le commentaire de façon ponctuelle (et donc a priori non recopiable, soit à intégrer le commentaire dans une cellule de la ligne pour le gérer comme une donnée de la ligne à part entière.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Sans suite à de graves pb de santé
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans suite à de graves pb de santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Bonsoir,

    Merci pour toutes ces explications et la pertinence de l'utilisation des commentaires attachés à une cellule. Je vais m'astreindre à faire comme tu le proposes.

    Jean-Michel

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

Discussions similaires

  1. [AC-2003] Copier-coller sans passer par le presse-papier
    Par jeanpierre78 dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/03/2017, 10h50
  2. Réponses: 6
    Dernier message: 04/07/2011, 21h15
  3. copier coller et fenetre enregistrer ou supprimer presse papier
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/01/2011, 23h47
  4. Simuler un copier/coller sans passer par le clipboard
    Par Lefaucheux dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/06/2008, 16h28

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