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 :

Ctrl+C /Ctrl+V incompatible avec "Private Sub Worksheet_SelectionChange" ? [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut Ctrl+C /Ctrl+V incompatible avec "Private Sub Worksheet_SelectionChange" ?
    Bonjour,

    J'ai une feuille excel avec le code ci-dessous.
    Sur cette feuille j'aimerai coller des éléments manuellement par Ctrl+C /Ctrl+V.
    Problème, dès que je sélectionne une cellule, pour y coller mes élément, une "moulinette" se lance durant 1s (le curseur de la sourie clignote) et ensuite impossible de coller (Ctrl+V) mes éléments. On à l'impression que la "moulinette" vide la mémoire de ce qui à été copié.
    Le "coller" (Ctrl+V) fonctionne uniquement si je ne clic pas sur la feuille, mais dans ce cas les élément sont collé sur la cellule ayant été sélectionnée en dernier, ce qui n'est pas forcément intéressant.

    En isolant cette partie du code, "Private Sub Worksheet_SelectionChange" le problème disparaît.
    J'aimerais pouvoir à la fois faire de Ctrl+C /Ctrl+V sur l'ensemble des cellules à partir de la ligne 20 et aussi conserver les fonctionnalités de ce code, sachant que ce code concerne uniquement la cellule C4.
    Y a-t-il une solution?

    Merci

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$C$4" Then
     
        h = Sheets("Repertoire SEDAM tempo").Range("Auteur").Value
        Me.ComboBoxChoixAuteur.List = h
        Me.ComboBoxChoixAuteur.Height = Target.Height + 3
        Me.ComboBoxChoixAuteur.Width = Target.Width
        Me.ComboBoxChoixAuteur.Top = Target.Top
        Me.ComboBoxChoixAuteur.Left = Target.Left
        Me.ComboBoxChoixAuteur = Target
        Me.ComboBoxChoixAuteur.Visible = True
        Me.ComboBoxChoixAuteur.Activate
      Else
        Me.ComboBoxChoixAuteur.Visible = False
     
      Call RemplissageInterlocuteur
     End If

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    sachant que ce code concerne uniquement la cellule C4.
    non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$C$4" Then
     
      Else
        Me.ComboBoxChoixAuteur.Visible = False
     
      Call RemplissageInterlocuteur
     End If
    Si tu n'est pas en C4 ce code lance la macro "RemplissageInterlocuteur"

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Bien vu, merci,

    J'ai corrigé comme ceci:
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$C$4" Then
     
        h = Sheets("Repertoire SEDAM tempo").Range("Auteur").Value
        Me.ComboBoxChoixAuteur.List = h
        Me.ComboBoxChoixAuteur.Height = Target.Height + 3
        Me.ComboBoxChoixAuteur.Width = Target.Width
        Me.ComboBoxChoixAuteur.Top = Target.Top
        Me.ComboBoxChoixAuteur.Left = Target.Left
        Me.ComboBoxChoixAuteur = Target
        Me.ComboBoxChoixAuteur.Visible = True
        Me.ComboBoxChoixAuteur.Activate
      Else
        Me.ComboBoxChoixAuteur.Visible = False
     
     End If
     
    If Target.Address <> "$B$20:$I$100" Then
        Call RemplissageInterlocuteur
     
    End If
    Problème, dans la suite de mon code.
    Il permet la mise en forme des cellules destinataires du ( Ctral+V).

    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
    '+++++++++++++++++++++++++++++++++++++++++++++++Mise en forme+++++++++++++++++++++++++++++++++
     
     Dim I As Integer
    For I = 0 To 50 'compteur de 0 à 50 (pour toutes les lignes de 0 à 50)
     
     
    If Range("B20").Offset(I).Value <> "" Or Range("C20").Offset(I).Value <> "" Then 'si à partir de B20 x compteur valeur non vide alors
        'CommandButtonGo.Visible = True 'Bouton GO visible
        Range("A20").Offset(I).Value = 1 + (I) 'Ajout n° de ligne +1
        Range("A20:E20").Offset(I).Borders.Value = 1 ' Ajout des bordures des lignes non vides
        End If
     
     
    If Range("B20").Offset(I).Value = "" And Range("C20").Offset(I).Value = "" Then ' Si colonne B et C side, alors
        Range("A20").Offset(I).Value = ""   'Suppression du n° de ligne
        Range("A20:E20").Offset(I).Borders.Value = 0    'Suppression des bordures
        End If
     
    If Range("F20").Offset(I).Value <> "" Then 'Colonne quantité
        Range("F20").Offset(I).Value = CDbl(Range("F20").Offset(I).Value)
        Range("F20").Offset(I).Borders.Value = 1
        End If
     
    If Range("F20").Offset(I).Value = "" Then
        Range("F20").Offset(I).Borders.Value = 0
        End If
     
    If Range("G20").Offset(I).Value <> "" Then
        Range("G20").Offset(I).Borders.Value = 1
        End If
     
    If Range("G20").Offset(I).Value = "" Then
        Range("G20").Offset(I).Borders.Value = 0
        End If
     
    If Range("H20").Offset(I).Value <> "" Then
        Range("H20").Offset(I).NumberFormat = "#,##0.00 $" 'Mise en forme PU
        Range("H20").Offset(I).Value = CDbl(Range("H20").Offset(I).Value)
        Range("H20:I20").Offset(I).Borders.Value = 1
        Range("I20").Offset(I).Value = Range("F20").Offset(I).Value * Range("H20").Offset(I).Value 'PT = Qté x PU
        Range("I20").Offset(I).NumberFormat = "#,##0.00 $" 'Mise en forme PT
        End If
     
    If Range("H20").Offset(I).Value = "" Then
        Range("H20:I20").Offset(I).Borders.Value = 0
        Range("I20").Offset(I).Value = ""
        End If
     
    Next
     
     
     'Call Doublons
     
     
     
     
    End Sub
    Y a-t-il une solution pour ce cas?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Désolé, mais je n'ai pas compris quel est le problème.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Je cherche à pouvoir faire des copier-coller dans ma feuille depuis un autre feuille ou un autre fichier. Et coller les éléments sur une plage de la ligne 20 à 100.
    Quand je clic par exemple en B20 pour faire un (Ctrl+V) la macro de "mise en forme" se lance. Et du coup ce que j'avais "mis en mémoire" lors du (Ctrl+C) est perdu.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Dans ce cas il faudrait peut être changer l'évènement qui fait la mise en forme, as tu vraiment besoin de le faire a chaque selection?
    (voir le tuto pour la liste des evenements)

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

Discussions similaires

  1. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 12h57
  2. [XL-2007] Private Sub Worksheet_SelectionChange
    Par iliesss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2010, 20h09
  3. Réponses: 9
    Dernier message: 06/07/2005, 14h20
  4. ODBC Access => Type Incompatible avec un champ DATE ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 23/04/2005, 02h02
  5. Simuler un Ctrl+C Ctrl+V
    Par VincenzoR dans le forum Composants
    Réponses: 5
    Dernier message: 15/05/2004, 15h02

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