XL 2019 VBA - Copie presse papier pour export seulement si une valeur dans les cellules sélectionné

Akif5723

XLDnaute Nouveau
Bonjour tous le monde e merci d'avance pour vos réponse.

Voilà pour vous exposer mon problème, je connais bien le copy paste, ou encore le pasteSelection, mais mon problème est que je voudrais faire une copie et seulement une copie dans le presse papier des valeur entre "B6:B1500", et je voudrais que dans les 1500 ligne sélectionné qu'il me copie que les ligne dont il y a une valeur et le ligne vide ne le soit pas (sachant que c'est une valeur qui émane d'une fonction "si" et je veux qu'il garde simplement le texte et pas la formule).
Je precise bien le presse papier car cela va être exporter sur un autre logiciel.
Du coup je ne trouve pas la solution si quelqu'un a une idée je suis preneur.

Range("B6:B1500").Select
Selection.Copy
 

Akif5723

XLDnaute Nouveau
Bonjour Akif5723, le forum

Une piste ici

@Phil69970
Bonjour Phil69970:
Merci,
Pas vraiment ce que je veux s: .... ou plutôt j'ai pas bien compris cette macros (j'ai oublie de précisé mon niveau à VBA qui est très proche du Novicisme voir du nullisme :p:p)

En faite je sélectionne mes 1500 cellules et dans ces cellules il y a des cellules vide sans valeur, et quand je lance ma macro j'aimerais que le copie prenne en comte que les cellules comportant une valeur (texte entre autre) mais bon je ne trouve pas de copie spécial...

Une idée peut-être ?
 

patricktoulon

XLDnaute Barbatruc
Bonjour Akif5723, le forum

Je te propose :
VB:
    ActiveSheet.Range("$A$2:$B$1500").AutoFilter Field:=1, Criteria1:="<>"
    Range("B2:B1500").Copy
@Phil69970
bonjour à tous les deux
@Phil69970 et oui mais non!!

car quand tu enlève le filtre le clip se vide
le principe serait donc
  1. de filtrer
  2. copier
  3. récupérer le contenu du clip dans une variable
  4. enlever le filtre
  5. remettre le contenu de la variable dans le clip
on peut ainsi sortir d'excel meme le fermer en gardant le contenu du clip
VB:
'*************************************************************************************
'  VERSION POUR MAC ET WINDOWS
'necessite l 'activation de la référence [["" Microsoft Forms 2.0 Object Library ""]]
Public Property Get presse_papier_Mac_window()
    With New DataObject: .GetFromClipboard: presse_papier_Mac_window = .GetText(1): End With
End Property
Sub Macro2()

    With ActiveSheet.Range("$B$5:$B$22")
        .AutoFilter Field:=1, Criteria1:="=***"
        .Copy
        texte = presse_papier_Mac_window
        .AutoFilter    'on libere le filtre le texte à été memorisé dans la variable texte
        With New DataObject: .SetText texte: .PutInClipboard: End With
        MsgBox texte
    End With

End Sub
'************************************************************************************

version 2 pour windows uniquement car pour mac je ne sais pas en late binding
donc sans activer de référence


VB:
*************************************************************************************
'  VERSION POUR WINDOWS 2 en late binding (sans référence activé)
'necessite pas  l  'activation de la référence [["" Microsoft Forms 2.0 Object Library ""]]
Public Property Get presse_papier_window()
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: presse_papier_window = .GetText(1): End With
End Property

Sub Macro2()
    With ActiveSheet.Range("$B$5:$B$22")
        .AutoFilter Field:=1, Criteria1:="=***"
        .Copy
        texte = presse_papier_window
         MsgBox texte
  .AutoFilter    'on libere le filtre le texte à été memorisé dans la variable texte
        With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText texte: .PutInClipboard: End With
        End With
End Sub
'************************************************************************************
voila maintenant même après avoir fermé excel ou enlever le filtre ,le clip reste chargé ;)
 

Akif5723

XLDnaute Nouveau
bonjour à tous les deux
@Phil69970 et oui mais non!!

car quand tu enlève le filtre le clip se vide
le principe serait donc
  1. de filtrer
  2. copier
  3. récupérer le contenu du clip dans une variable
  4. enlever le filtre
  5. remettre le contenu de la variable dans le clip
on peut ainsi sortir d'excel meme le fermer en gardant le contenu du clip
VB:
'*************************************************************************************
'  VERSION POUR MAC ET WINDOWS
'necessite l 'activation de la référence [["" Microsoft Forms 2.0 Object Library ""]]
Public Property Get presse_papier_Mac_window()
    With New DataObject: .GetFromClipboard: presse_papier_Mac_window = .GetText(1): End With
End Property
Sub Macro2()

    With ActiveSheet.Range("$B$5:$B$22")
        .AutoFilter Field:=1, Criteria1:="=***"
        .Copy
        texte = presse_papier_Mac_window
        .AutoFilter    'on libere le filtre le texte à été memorisé dans la variable texte
        With New DataObject: .SetText texte: .PutInClipboard: End With
        MsgBox texte
    End With

End Sub
'************************************************************************************

version 2 pour windows uniquement car pour mac je ne sais pas en late binding
donc sans activer de référence


VB:
*************************************************************************************
'  VERSION POUR WINDOWS 2 en late binding (sans référence activé)
'necessite pas  l  'activation de la référence [["" Microsoft Forms 2.0 Object Library ""]]
Public Property Get presse_papier_window()
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: presse_papier_window = .GetText(1): End With
End Property

Sub Macro2()
    With ActiveSheet.Range("$B$5:$B$22")
        .AutoFilter Field:=1, Criteria1:="=***"
        .Copy
        texte = presse_papier_window
         MsgBox texte
  .AutoFilter    'on libere le filtre le texte à été memorisé dans la variable texte
        With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText texte: .PutInClipboard: End With
        End With
End Sub
'************************************************************************************
voila maintenant même après avoir fermé excel ou enlever le filtre ,le clip reste chargé ;)
Bonjour Patricktoulon,

Merci pour t’as réponse j’essaierais t’as méthode aussi.
Il est vrais que dans la méthode précédente faut faire une sélection de filtre, mais dans ce que j’ai à faire j’ai une macro de suppression après la macro de copie donc j’ai pu entre autre ajouter la reselection de toutes les cellules après la suppression donc ça m’as quand même aider.
Je sais que c’est tordu comme truck mais ça me facilite la vie pour un truck au boulot.
En tous cas super la communauté ici merci à vous deux 🤗🤗💪💪
 

Discussions similaires

Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78