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 :

[Macro] Applicable à toute la feuille [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 30
    Par défaut [Macro] Applicable à toute la feuille
    Hello,

    J'ai un code qui fonctionne bien pour ce que je veux faire (recopier des valeurs de cellule dans un commentaire dans la 1ère colonne. Jusque la ça fait le taf mais pour le A2 seulement… Il va chercher les infos dans D2, E2, F2 va les copier dans un commentaire en A2 puis va chercher les infos dans G2, H2 et I2 et va les copier également. Jusque la pas de soucis mais il doit reproduire ce qui a été enregistré sur les autres lignes, donc aller mettre un commentaire avec dans A3 avec les infos D3, E3,... etc

    Voici le code :

    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 MacroTest1()
    '
    ' MacroTest1 Macro
    '
     
    '
        Range("D2:F2").Select
        Selection.Copy
        Range("A2").Select
        Application.CutCopyMode = False
        Range("A2").AddComment
        Range("A2").Comment.Visible = False
        Range("A2").Comment.Text Text:="Longitude 25 26 27" & Chr(10) & ""
        Range("G2:I2").Select
        Selection.Copy
        Range("A2").Select
        Application.CutCopyMode = False
        Application.CommandBars("Office Clipboard").Visible = False
        Range("A2").Comment.Text Text:="Longitude 25 26 27" & Chr(10) & "" & Chr(10) & "Latitude 28 29 30" & Chr(10) & ""
        Range("A2").Comment.Shape.TextFrame.Characters.Font.Size = 12
        Selection.Comment.Shape.ScaleWidth 1.1, msoFalse, msoScaleFromTopLeft
        Selection.Comment.Shape.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
        Range("J2").Select
    End Sub
    Une idée ?

    Merci d'avance.

  2. #2
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai un code qui fonctionne bien pour ce que je veux faire (recopier des valeurs de cellule dans un commentaire dans la 1ère colonne
    Je m'interroge sur la raison de la copie des cellules qui semble ne servir à rien
    Exemple entre autres des lignes 8 à 11 de ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Range("D2:F2").Select
        Selection.Copy
        Range("A2").Select
        Application.CutCopyMode = False
    Tu copies D2:F2 et tu n'en fais rien ?

    par contre, je ne vois pas comment tu as pu écrire dans un commentaire le contenu de cellule. D'après ton code tu écris tout simplement une valeur constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").Comment.Text Text:="Longitude 25 26 27" & Chr(10) & ""

    Pour ton information la méthode Select ne sert à rien
    Par exemple pour copier D2:F2 à partir de la cellule A25, il suffit d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D2:F2").Copy Destination:=Range("A25")
    mais attention qu'il s'agit du traitement de cellules de la feuille active. Il est préférable de préciser la parentalité de l'objet Range en indiquant la feuille et le classeur
    soit par exemple pour une copie de données des cellules D2:F2 de la feuille nommée Feuil1 vers la cellule A25 de la même feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ThisWorkbook.Worksheets("Feuil1")
    .Range("D2:F2").Copy Destination:=.Range("A25")
    End With
    alors que dans le code ci-dessous, nous copions les cellules D2:F2 de la feuille nommée Feuil1 vers la cellule A25 de la feuille nommée Feuil2 mais du même classeur (celui où se trouve le code VBA)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ThisWorkbook
    .Worksheets("Feuil1").Range("D2:F2").Copy Destination:=.Worksheets("Feuil2").Range("A25")
    End With
    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

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 30
    Par défaut
    Bonjour,

    En fait, dans la première colonne (qui commence à A2) j'ai un numéro mais le numéro ne sert à rien.
    Ensuite en D2, E2, F2 j'ai par exemple D2 24, E2 21 F2 14, quand j'ai enregistré la Macro j'ai sélectionné D2 E2 et F2 j'ai fait clic droit Copier ensuite j'ai été dans A2 "Insérer un commentaire" et j'ai clic sur Accueil, Press papier et j'ai fait coller (et ça marque la valeur des 3 cellules) c'est pil ce que je voulais. A part qu'il doit le faire à chaque ligne…

    Tu vois ce que je veux dire ?

    Donc en détail je lance l'enregistrement : Je vais sélectionner D2 E2 et F2 je fais clic droit copier ensuite je vais dans A2 "Insérer un commentaire" je supprime le nom d'utilisateur, j'écris Longitude puis je clic sur Accueil, Press papier, les données de D2 E2 et F2 y sont je fais coller. Ca le met dans le commentaire. Ensuite je vais copier G2 H2 et I2 de la même façon, je retourne dans le A2 et je fais Modifier Commentaire et la même chose Press papier et je colle la ligne.

    J'ai juste du rajouter manuellement le code pour agrandir l'écriture et mettre une taille à la fenêtre commentaire.

    Ca fait vraiment exactement ce que je veux, à part qu'il ne l'applique que à la première ligne…
    Il faudrait qu'il le fasse pour toute la page donc passer en D3 E3 F3 copier aller en A3 etc etc

    Merci

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 30
    Par défaut
    Merci Philippe

    Je vais y mettre la solution, si ça peut aiguiller quelqu'un dans le futur :

    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
     
     
    Sub MacroTest1()
    Dim Dlig As Long
    Dim X As Long
     
    Dlig = Cells(Rows.Count, "A").End(xlUp).Row
    For X = 2 To Dlig
        If Not Range("A" & X).Comment Is Nothing Then Range("A" & X).Comment.Delete
        Range("A" & X).AddComment
        Range("A" & X).Comment.Visible = False
        Range("A" & X).Comment.Text Text:="Longitude " & Range("D" & X) & " " & Range("E" & X) & _
            " " & Range("F" & X) & Chr(10) & Chr(10) & "Latitude " & Range("G" & X) & " " & _
            Range("H" & X) & " " & Range("I" & X) & Chr(10) & ""
     
        Range("A" & X).Comment.Shape.TextFrame.Characters.Font.Size = 12
        Range("A" & X).Comment.Shape.ScaleWidth 1.1, msoFalse, msoScaleFromTopLeft
        Range("A" & X).Comment.Shape.ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft
    Next X
    End Sub

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

Discussions similaires

  1. [XL-2010] La même macro sur toutes mes feuilles
    Par guimauviette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/06/2015, 12h56
  2. [XL-2010] Appliquer la macro a toutes les feuilles du classeur
    Par lilou4980 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2014, 15h27
  3. application a toute les feuilles du classeur
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/04/2009, 14h04
  4. Débutant: Application à toutes les feuilles d'un classeur
    Par spirit1300 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/12/2007, 09h19
  5. Charger automatiquement toutes les feuilles de mon application
    Par Virtualité dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 03/11/2007, 19h10

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