Code VBA copier dans presse papier pour coller ailleurs

Bonsoir à tous,

Je reviens vers le forum ce soir pour une petite demande, un peu "farfelu" peut-être mais qui si elle est possible me serait d'une grande aide!!

Je me lance:

- en fait j'aimerais savoir si via un code vba, il est possible de sélectionner par exemple plusieurs cellules (qui dans mon cas contiennent des adresses mails), les copies les une derrières les autres en les séparant d'une virgule puis il faudrait que celles-ci se retrouvent copier sous cette même forme dans le presse papier Windows pour que je puisse les coller très facilement en faisant un Ctrl+V dans une fenêtre internet......

Je vais joindre un fichier regroupant mes souhaits pour que ça soit plus parlant^^

Un grand MERCI d'avance pour le temps que vous allez consacrer à ma demande......

Bonjour,

une proposition via une macro. sélectionner les cellules en colonne B avant de lancer la macro

Sub toclip()
liste = ""
For Each c In Selection
liste = liste & c.Offset(0, -1) & ";"
Next c

Cells(1, Columns.Count) = liste
Cells(1, Columns.Count).Copy

End Sub

Bonsoir h2so4,

Tout d'abord Merci de vous être pencher sur mon problème!!

Votre Macro fonctionne, seulement il faut maintenir la touche "ctrl" pour pouvoir sélectionner plusieurs cellules^^ :/

N'y a t-il pas moyen via un double clic de sélectionner la cellule mail puis faire un autre double clic sur la suivante et ainsi de suite pour rentre la procédure plus simple??

Merci

Bonsoir le fil

Une autre façon de faire

Sub ToClip()
  ' Il faut cocher la référence : Microsoft Forms 2.0 Object Library
  Dim DataObj As New MSForms.DataObject
  Dim Liste As String, Rng As Range
  ' Initialiser le contenu de la liste
  Liste = ""
  ' Pour chaque Cellule sélectionnée
  For Each Rng In Selection
    ' Définir la liste des emails
    Liste = Liste & Rng.Offset(0, -1) & ";"
  Next Rng
  ' Placer cette liste dans le clipboard
  With DataObj
    .SetText Liste
    .PutInClipboard
  End With
End Sub

A+

Bonsoir BrunoM45,

Merci pour l'intérêt que vous avez porté à ma demande!!

Mais à la lecture de votre code, il me semble que mon petit problème de sélection reste le même non??

re bonsoir,

solution pour sélectionner via une procédure événementielle liée à sheet1.

macros à mettre dans le code de sheet1.

double-cliquer sur les cellules de la colonne B pour sélectionner/désélectionner. lancer la macro toclip pour copier les adresses mail vers le clipboard.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Then Exit Sub
Application.EnableEvents = False
For Each c In Target
If c.Value = "sélection" Then c.Value = "" Else c.Value = "sélection"
Next c
Application.EnableEvents = True
End Sub

Sub toclip()
liste = ""
For Each c In Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
If c.Value = "sélection" Then liste = liste & c.Offset(0, -1) & ";"
Next c

Cells(1, Columns.Count) = liste
Cells(1, Columns.Count).Copy

End Sub

edit correction des instructions d'utilisation

Re,

Via double clique, code à mettre dans Feuil1

Option Explicit
' Il faut cocher la référence : Microsoft Forms 2.0 Object Library
Dim DataObj As New MSForms.DataObject
Dim Liste As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("B:B")) Is Nothing Then
    ' Annuler le mode édition de la celule
    Cancel = True
    ' Si la couleur de la cellule est déjà verte
    If Target.Interior.Color = 5287936 Then
      ' Enlever al couleur
      Target.Interior.Color = xlNone
      ' Supprimer le nom de la liste
      Liste = Replace(Liste, Target.Offset(0, -1) & ";", "")
    Else
      ' SInon mettre la cellule en vert
      Target.Interior.Color = 5287936
      ' Ajouter le nom à la liste
      Liste = Liste & Target.Offset(0, -1) & ";"
    End If
    ' Placer cette liste dans le clipboard
    With DataObj
      .SetText Liste
      .PutInClipboard
    End With
  End If
End Sub

A+

Re BrunoM45,

Votre code est vraiment pas mal du tout et j'aime beaucoup le principe de double clic, qui colorise la cellule en vert en plus, ce qui permet de faire une vérification.....

En revanche, comment faire pour remettre le fichier à zéro?? c'est à dire sans devoir re désélectionner toutes les cellules choisies manuellment??......

Re h2so4,

Je suis désolé mais je ne parviens pas à faire fonctionner votre nouvelle macro???

je ne comprends pas ce que je dois faire exactement?? désolé....

j'ai essayé de clarifier les instructions d'utilisation dans mon message précédent

@ h2so4,

AAAAHHHHH en effet je suis désolé mais je n'avais pas compris dans quel sens vous preniez le problème...... et je m'en excuse^^ :/

Donc, dans votre exemple vous prenez en quelque sorte le problème à l'envers!! en double cliquant vous faites apparaître ou pas le mot "sélection" et en exécutant la macro, celle ci copie les lignes qui contiennent le terme!

Du coup, dans mon exemple, cela été problématique, vu que moi au départ ma colonne B, contenait dans chaque cellule le terme "sélection", du coup je devais déselectionner les cellules dont je ne voulais pas.... (et ça pouvait beaucoup.... ce qui m'arrangeait pas^^)

mais en vidant le contenu de la colonne, j'ai vu qu'en double cliquant sur les cellules, "sélection" apparaissait, du coup plus de problème!!!

Un grand merci à tous les 2 pour le temps que vous avez consacré à ma demande!

Je vais rester sur la solution de h2so4, mais BrunoM45 si tu as une méthode pour remettre le fichier à l'état initial via une macro ou autre je suis preneur!!

ENCORE UN GRAND MERCI et bonne soirée à vous.

Re,

samsam07 a écrit :

Re BrunoM45,

Votre code est vraiment pas mal du tout et j'aime beaucoup le principe de double clic, qui colorise la cellule en vert en plus, ce qui permet de faire une vérification.....

Merci, "pas mal du tout"... moi j'aurai dis "fantastique"

samsam07 a écrit :

En revanche, comment faire pour remettre le fichier à zéro?? c'est à dire sans devoir re désélectionner toutes les cellules choisies manuellment??......

Il suffit d'ajouter ce code dans Feuil1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ' Vérifier que la selection se fait en dehors de la colonne B
  If Intersect(Target, Range("B:B")) Is Nothing Then
    ' Si c'est le cas on efface les couleurs
    Range("B:B").Interior.Color = xlNone
  End If
End Sub

A+

Re BrunoM45,

Oui je reconnais......""""" votre code est FANTASTIQUE!!!! lol

Je vous remercie pour le temps consacré à ma demande, à des heures tardives en plus, Super de votre part!!

Je vais également essayer de rajouter le bout de code que vous venez de me faire parvenir.... car à mon grand désespoir j'espérais ne pas a avoir à utiliser ce fichier si vite mais là si, plus le choix, donc nickel pour la rapidité et la qualité des réponses (digne de ce forum d’ailleurs en passant!!)

et bonne journée

Rechercher des sujets similaires à "code vba copier presse papier coller ailleurs"