IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Excel

FAQ ExcelConsultez toutes les FAQ

Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022 

 
OuvrirSommaireLe presse papier

Dans le volet Presse-papiers,
cliquez sur le bouton "Options".
Décochez l'option "Afficher le presse-papiers Office automatiquement".

Créé le 2 octobre 2007  par SilkyRoad

Cet exemple copie la feuille nommée "Synthese" dans un nouveau classeur.

Vba
Sélectionnez
Workbooks("Classeur1.xls").Worksheets("Synthese").Copy
Créé le 20 août 2007  par SilkyRoad

Grâce à ce code, à placer dans un module standard du classeur source, la feuille nommée "Feuil1" est copiée dans un nouveau fichier, sans les procédures VBA du module objet.

Vba
Sélectionnez
Sub CopieFeuille_SansCodeVba()
    ThisWorkbook.Worksheets("Feuil1").Copy
 
    With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
        .DeleteLines 1, .CountOfLines
    End With
End Sub
Créé le 26 mai 2008  par SilkyRoad

Pour désactiver le mode couper/copier, utilisez :

Vba
Sélectionnez
Application.CutCopyMode = False

Cela a pour conséquence de griser le bouton Coller et d'empêcher le collage de données.

Créé le 20 août 2007  par SilkyRoad

Utilisez cette procédure pour vider le contenu du presse papier.

Vba
Sélectionnez
Sub ViderPressePapier()
'Nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
Dim Cible As dataObject
 
Set Cible = New dataObject
Cible.setText ""
Cible.putInClipboard
 
Set Cible = Nothing
End Sub
Créé le 20 août 2007  par SilkyRoad

Pour récupérer du texte contenu dans le presse papier, vous pouvez utiliser :

Vba
Sélectionnez
Sub recupererTextePressePapier()
'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
Dim Resultat As String
 
With New dataObject
    .GetFromClipboard
    Resultat = .GetText(1)
End With
 
MsgBox Resultat
End Sub
Créé le 20 août 2007  par SilkyRoad

Il s'agit d'un bug connu: La constante xlPasteColumnWidths peut renvoyer un message d'erreur dans certains cas.

Vba
Sélectionnez
'xlPasteColumnWidths= la largeur de colonne copiée est collée.
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, _ 
    Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False

Pour y remédier, remplacez xlPasteColumnWidths par la valeur 8.
Par exemple :

Vba
Sélectionnez
ActiveSheet.Range("A1").PasteSpecial Paste:=8, _ 
    Operation:=xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False
Créé le 20 août 2007  par SilkyRoad

Placez ces procédures dans le module objet ThisWorkbook.
Bien entendu les macros doivent être activées pour que ça fonctionne.

Vba
Sélectionnez
Option Explicit
 
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.CutCopyMode = False
End Sub
 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.CutCopyMode = False
End Sub
Créé le 20 août 2007  par SilkyRoad

Cet exemple permet de coller l'image d'un UserForm dans la feuille de calcul.

Vba
Sélectionnez
Option Explicit
 
Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
 
Private Sub commandButton1_Click()
    keybd_event vbKeySnapshot, 1, 0&, 0&
    DoEvents
 
    Range("A1").Select
    ActiveSheet.Paste
End Sub

Sans macro, utilisez le raccourci clavier Alt+ImprimEcran.

Créé le 20 août 2007  par SilkyRoad
Vba
Sélectionnez
Option Explicit
 
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
 
 
Sub Image_ClipBoard()
Dim x As Byte
Dim Sh As Shape
Dim monImage As String
 
'Compte le nombre d'objet initial dans la feuille
x = ActiveSheet.Shapes.Count
 
Application.ScreenUpdating = False
ActiveSheet.Range("A1").Select
'Colle le contenu du presse papier dans la feuille de calcul
ActiveSheet.Paste
 
'vérifie si le collage effectué correspond à une image
If x = ActiveSheet.Shapes.Count Then
    Application.ScreenUpdating = True
    MsgBox "Opération annulée"
    Exit Sub
 
    Else
 
    'Récupère la dernière forme de la feuille
    Set Sh = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
    'Définit le nom et le lieu de stockage de l'image
    monImage = "C:\monImage.jpg"
 
    'Colle l'image dans un graphique
    With ActiveSheet.ChartObjects.Add(0, 0, Sh.Width, Sh.Height).Chart
        .Paste
        'Sauvegarde l'image du graphique au format jpg
        .Export monImage, "JPG"
    End With
 
    'Supprime le graphique et la forme.
    With ActiveSheet
        .ChartObjects(ActiveSheet.ChartObjects.Count).Delete
        .Shapes(ActiveSheet.Shapes.Count).Delete
    End With
 
    Application.ScreenUpdating = True
 
 
    '-------------------------------------------------------------
    'Option pour les utilisateurs de Windows XP :
    'visualisation de l'image créée, avec l'apercu images_telecopies Windows
    'testé avec Excel 2002 et WinXP
 
    ShellExecute 0, "open", "rundll32.exe", _
        "C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & monImage, 0, 1
End If
 
End Sub
Créé le 20 août 2007  par SilkyRoad

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.