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 avec mise en évidence de la sélection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Copier coller avec mise en évidence de la sélection
    Bonjour,
    J'utilise un code pour mettre en évidence ma sélection dans ma feuille de calcul:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Effacer la sélection précédente
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Columns(Col_Cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, Col_Cour).Font.Bold = False
    End If
    'Mettre en évidence la sélection actuelle
    Lig_Cour = Target.Row
    Col_Cour = Target.Column
    Rows(Lig_Cour).Interior.ColorIndex = 3
    Columns(Col_Cour).Interior.ColorIndex = 3
    Cells(Lig_Cour, Col_Cour).Font.Bold = True
    End Sub
    Dans le code de la feuille de calcul, puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Columns(Col_Cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, Col_Cour).Font.Bold = False
    End If
    End Sub
    En ThisWorkbook.

    Le problème est qu'avec ce code, je ne peux faire de copier coller, je peux sélectionner et copier mais quand je sélectionne pour coller, les cellule se mettent en rouge et adieu la sélection précédemment copiée.

    Je pensais (sans savoir si ça existe) à une sorte de "BeforePaste" pour mettre le code en "pause" mais je ne trouve rien de tel sur internet.

    Quelqu'un y voit-il plus clair que moi?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    ..... mais quand je sélectionne pour coller, les cellule se mettent en rouge et adieu la sélection précédemment copiée.
    passes par collage spécial => valeur, à mon avis, je n'ai pas lu ton code à fond mais je pense que tu copies/colles manuellement
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Oui, je sélectionne la cellule A avec la souri -> Ctrl C, le contours de met en pointillés puis je sélectionne ma cellule B toujours avec la souris et au passage, je pers les pointillés de la première cellule et je ne peux faire Ctrl V (enfin, je peux le faire mais rien ne se passe) car le changement de mise en rouge de la ligne et de la colonne de la cellule sélectionnée annule le Ctrl V (enfin c'est l'impression que ça donne)

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    je pense que tu ne devrais pas travailler avec "Worksheet_SelectionChange" ou limiter le nombre de "Targets" concernées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Tu penses à une autre méthode en particulier??
    Les cellules que je voudrais copier coller sont dans les cibles qu'il me faudrait colorer, idem pour le collage mais la limitation m'intéresse dans le souci d'alléger les manip dans mes pages, comment dois-je procéder?

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    copies et essayes ces codes, il a fallu que je cherche, il y a peut-être mieux mais bon !!!
    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
    Option Explicit
    Dim texte As Range
    Dim Resultat As String, Cible As dataObject
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Effacer la sélection précédente
    If Application.CutCopyMode = 1 Then
      Application.EnableEvents = False
      recupererTextePressePapier
      Target = WorksheetFunction.Clean(Resultat)
      ViderPressePapier
      Application.EnableEvents = True
    Else
      If Lig_Cour <> 0 And col_cour <> 0 Then
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Columns(col_cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, col_cour).Font.Bold = False
      End If
      'Mettre en évidence la sélection actuelle
      Lig_Cour = Target.Row
      col_cour = Target.Column
      Rows(Lig_Cour).Interior.ColorIndex = 3
      Columns(col_cour).Interior.ColorIndex = 3
      Cells(Lig_Cour, col_cour).Font.Bold = True
    End If
    End Sub
    Sub ViderPressePapier() 'de la FAQ Sylkyroad (developpez.net)
    'Nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
    Set Cible = New dataObject
    Cible.setText ""
    Cible.putInClipboard
     
    Set Cible = Nothing
    End Sub
    Sub recupererTextePressePapier() 'de la FAQ Sylkyroad (developpez.net)
    'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
    Set Cible = New dataObject
    With Cible
        .GetFromClipboard
        Resultat = .GetText(1)
    End With
    End Sub
    Sub tt() 'si problème, exécutez cette macro
      Application.EnableEvents = True
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    L'option Explicit, tu le mets en Module ou en Feuil?

    Impeccable.

    MERCI BEAUCOUP!!!!!!

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Tu penses à une autre méthode en particulier??
    tout est possible mais je ne connais pas le reste de ta programmation, exemple : comment sont déclarées les variables (Lig_Cour, Col_Cour) et comment sont'elles alimentées
    Passer par un CommandButton, un autre évènement "Sheets_Activate", "Désactivate"....

    Les cellules que je voudrais copier coller sont dans les cibles qu'il me faudrait colorer,
    ton problème est bien là même si tu cernes bien les plages concernées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Voilà le code pour Lig_Cour (dans un module):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Lig_Cour As Integer, Col_Cour As Integer
    Je viens de le retrouver

    Donc rien pour un hypothétique "BeforeCopy" ou "BeforePaste" pour mettre le code en pause et le relancer après?

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Ok mais quand je lis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ....
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
    ....
    comment ont'elles pris une valeur et ou, parce que si elles ne sont pas alimentées avant, elles sont à 0
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    C'est un code que j'ai trouvé sur internet, donc là je ne sais pas

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    bonsoir,
    non dispo de la journée, je réponds à cette question
    L'option Explicit, tu le mets en Module ou en Feuil?
    en haut de chaque module (avant les "Sub"), tu devrais, pour que ça apparaisse automatiquement, regarder cette image

    Nom : explicit.JPG
Affichages : 108
Taille : 40,3 Ko
    Impeccable.

    MERCI BEAUCOUP!!!!!!
    alors lis bien ma signature
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    donc je crois que je ne pourrai pas t'aider, il faut un minimum de connaissance ou de compréhension du code que tu as copié, sais-tu au moins comment on recherche un mot dans un programme ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    et donne les coordonnées de la cellule précédemment sélectionnée pour en effacer la couleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
     
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Columns(Col_Cour).Interior.ColorIndex = xlNone
    Ils sont toujours différents de 0 puisque sur une feuille de calculs, il n'y a aucune cellule (0;0).

  15. #15
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    C'est bien ce que je pense, il est temps que tu te formes un peu si tu veux continuer, que te dire après cette dernière réponse,
    ce sont des variables, alors comment veux-tu qu'elles soient différentes de 0 si on ne leur donne pas de valeur au départ
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #16
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Avec un petit MsgBox on y voit plus clair:

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Effacer la sélection précédente
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
    MsgBox Lig_Cour
    MsgBox Col_Cour
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Columns(Col_Cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, Col_Cour).Font.Bold = False
    End If
    'Mettre en évidence la sélection actuelle
    Lig_Cour = Target.Row
    Col_Cour = Target.Column
    Rows(Lig_Cour).Interior.ColorIndex = 3
    Columns(Col_Cour).Interior.ColorIndex = 3
    Cells(Lig_Cour, Col_Cour).Font.Bold = True
    End Sub
    A tous les coups, si ta cellule sélectionnée était A1, la ligne à sa droite et la colonne en dessous sont en rouge, si tu en sélectionnes une autre, les MsgBox te renvoient 1 puis 1.....

    et, enfin, les cellules précédemment rougies ne le sont plus et les cellules de la ligne et de la colonne de la cellule nouvellement sélectionnée devient rouges à leur tour

  17. #17
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Parce que les valeurs de et sont devenues égales à: et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lig_Cour = Target.Row
    Col_Cour = Target.Column
    Et qu'on coloré ces dernières:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rows(Lig_Cour).Interior.ColorIndex = 3
    Columns(Col_Cour).Interior.ColorIndex = 3

  18. #18
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Oui, et puis ce sont des variables publics:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Lig_Cour As Integer, Col_Cour As Integer

  19. #19
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Avec un petit MsgBox on y voit plus clair:
    et le résultat donne quoi ?, si tu me dis que ce n'est pas égal à 0, c'est bien parce qu'elles ont pris une valeur ailleurs, dans un des codes que tu ne montres pas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    au temps pour moi, je n'ai pas fait gaffe à cette partie (j'ai lu en diagonale)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Lig_Cour = Target.Row
    Col_Cour = Target.Column
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Copier coller avec mise forme de cellule.
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/12/2011, 23h39
  2. Copier/Coller avec conservation de la mise en forme du texte initial.
    Par Richard_35 dans le forum Evolutions du club
    Réponses: 16
    Dernier message: 24/11/2011, 18h33
  3. Problemes avec copier/coller avec VI
    Par fgalves dans le forum Linux
    Réponses: 7
    Dernier message: 06/01/2009, 15h43
  4. Fonction copier/coller avec un menu
    Par avogadro dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2006, 22h44
  5. copier coller avec Pastespecial en VBA
    Par stormless dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/11/2005, 11h59

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