Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Réaliser un coupez/coller en Macro en effectuant une combinaison de touches

Gabca

XLDnaute Nouveau
Bonjour a tous,

Je suis débutant en Excel et tout ce que j'ai appris je l'es appris sur le tas,

Je voudrais crée une macro qui fait un couper/coller mais seulement des valeurs, voila le code qui en est sortie :

VB:
Sub Coupez_Coller()
    
    If Etat = False Then
        Selection.Copy
        Etat = True
        Set Select_CC = Selection
        Set Select_T = Selection
    Else
        Selection.PasteSpecial Paste:=xlPasteValues
        Select_CC.SpecialCells(xlCellTypeConstants, 1).ClearContents
        Etat = False
        End If
End Sub

La Macro marche sans soucis, mais pas dans un cas : si je coupe et colle sur une partie de ma sélection initiale, Elle se retrouve en partie effacer :/

Donc je le demandais si il y avait une solution "simple" a mon problème, autre que copier ma sélection sur une feuille et venir la récupéré après ...

Merci d'avance !

Gabriel.
 
Solution
Une proposition où j’enchaîne la sélection de la destination dans la macro :
VB:
Sub couperColler()
    Dim datas, c As Range
    datas = Selection.Value
    On Error Resume Next
    Set c = Application.InputBox(Selection.Address & " copié" & vbLf & "Cellule haut-gauche de destination", Type:=8)
    On Error GoTo 0
    If Not c Is Nothing Then
        Selection.ClearContents
        c.Resize(UBound(datas, 1), UBound(datas, 2)) = datas
    End If
End Sub
Regarde si ça te va
eric

Gabca

XLDnaute Nouveau
Merci d'avoir répondu !

C'est ce que j'ai essayer dans un premier lieu évidement, mais ducoup excel colle du vide, car je supprime ce que je veux copié avant, il ne le sauvegarde pas dans la variable :/
 

eriiic

XLDnaute Barbatruc
Une proposition où j’enchaîne la sélection de la destination dans la macro :
VB:
Sub couperColler()
    Dim datas, c As Range
    datas = Selection.Value
    On Error Resume Next
    Set c = Application.InputBox(Selection.Address & " copié" & vbLf & "Cellule haut-gauche de destination", Type:=8)
    On Error GoTo 0
    If Not c Is Nothing Then
        Selection.ClearContents
        c.Resize(UBound(datas, 1), UBound(datas, 2)) = datas
    End If
End Sub
Regarde si ça te va
eric
 

Pièces jointes

  • Classeur1.xlsm
    17.1 KB · Affichages: 19

Discussions similaires

Réponses
2
Affichages
696
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…