UDF > Excel >


_Excel_RangeCopyPaste

Coupe ou colle une ou plusieurs cellules, lignes ou colonnes vers une plage ou à partir de/vers le presse-papier

#include <Excel.au3>
_Excel_RangeCopyPaste ( $oWorksheet, $vSourceRange [, $vTargetRange = Default [, $bCut = False [, $iPaste = Default [, $iOperation = Default [, $bSkipBlanks = False [, $bTranspose = False]]]]]] )

Paramètres

$oWorksheet Objet de la feuille de calcul source
$vSourceRange Plage source à partir de laquelle copier/couper. Peut être un objet plage ou une plage au format $xlA1.
    Si la valeur le mot-clé Default alors la plage sera copiée à partir du presse-papiers.
$vTargetRange [optionnel] Plage cible pour l'opération copier/couper. Peut être un objet plage ou une plage au format $xlA1.
    Si la valeur est le mot-clé Default alors la plage sera copié dans le presse-papiers (par défaut = mot-clé Default)
$bCut [optionnel] Si la valeur est True la plage source n'est pas copiée mais coupée (par défaut = False)
    Ce paramètre est ignoré lorsque $vSourceRange contient le mot-clé Default.
$iPaste [optionnel] La partie de la plage qui sera collée à partir du presse-papiers (formules, formats...). Doit être une valeur de l'énumération XlPasteType
    (par défaut = le mot-clé Default)
$iOperation [optionnel] L'opération à coller (addition, division, multiplication, ... ). Doit être une valeur de l'énumération XlPasteSpecialOperation
    (par défaut = mot-clé Default )
$bSkipBlanks [optionnel] Si la valeur est True, les cellules vides du presse-papiers ne seront pas collées dans la plage cible (par défaut, False)
$bTranspose [optionnel] Mettre à True pour transposer les lignes et les colonnes lorsque la plage est collée (par défaut, False)

Valeur de retour

Succès: Retourne l'objet plage cible si $vTargetRange <> Default, sinon 1.
Échec: Retourne 0 et définit @error <> 0.
@error: 1 - $oWorksheet n'est pas un objet ou n'est pas un objet feuille de calcul
2 - $vSourceRange n'est pas valide. @extended contient le code d'erreur COM
3 - $vTargetRange n'est pas valide. @extended contient le code d'erreur COM
4 - Une erreur s'est produite lors de l'opération Coller. @extended contient le code d'erreur COM
5 - Une erreur s'est produite lors de l'opération Couper. @extended contient le code d'erreur COM
6 - Une erreur s'est produite lors de l'opération Copier. @extended contient le code d'erreur COM
7 - $vSourceRange et $vTargetRange ne peuvent pas être définis par Default en même temps

Remarque

$vSourceRange et $vTargetRange ne peuvent pas être définis à Default en même temps.
Si $vSourceRange = Default alors:
* La plage sera copiée à partir du presse-papiers en utilisant la méthode PasteSpecial
* $bCut sera ignorée
* $iPaste, $iOperation, $bSkipBlanks et $bTranspose seront pris en compte
Si $vSourceRange et $vTargetRange sont spécifiés, les paramètres $iPaste, $iOperation, $bSkipBlanks et $bTranspose sont ignorés

Exemples

Exemple 1

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
; Ouvre le classeur 1
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

; *****************************************************************************
; Copie une plage de 3 lignes et 2 colonnes sur la feuille de calcul active.
; Colle la plage source en tant qu'objet.
; *****************************************************************************
Local $oRange = $oWorkbook1.ActiveSheet.Range("I2:J4")
_Excel_RangeCopyPaste($oWorkbook1.ActiveSheet, $oRange, "G7")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 1", "Erreur lors de la copie des cellules." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 1", "Plage 'I2:J4' copié avec succès en 'G7'.")


Exemple 2

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur exemple
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
; Ouvre le classeur 2
Local $oWorkbook2 = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel3.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel3.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf
; Ouvre le classeur 1
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

; *****************************************************************************
; Copie une seule cellule à partir d'un autre classeur. Colle  la plage source en tant qu'objet.
; *****************************************************************************
Local $oRange = $oWorkbook2.Worksheets(1).Range("A1")
_Excel_RangeCopyPaste($oWorkbook1.Worksheets(1), $oRange, "G15")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 2", "Error copying cells." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 2", "Range 'A1'from workbook _Excel3.xls successfully copied to 'G15'.")


Exemple 3

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
; Ouvre le classeur 1
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls")
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

; *****************************************************************************
; Copie 2 lignes (1 et 2) à partir de la feuille 2 vers le presse-papiers
; *****************************************************************************
_Excel_RangeCopyPaste($oWorkbook1.Worksheets(2), "1:2")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 3", "Erreur lors de la copie des lignes." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 3", "Lignes 1+2 copiées avec succès de la feuille 2 vers le presse-papier.")

; *****************************************************************************
; Colle la plage écrite dans l'exemple 3 à partir du presse-papiers à la feuille de calcul active.
; Seules les valeurs sans mise en forme seront collées.
; *****************************************************************************
_Excel_RangeCopyPaste($oWorkbook1.Activesheet, Default, "1:1", Default, $xlPasteValues)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 4", "Erreur lors de la copie des lignes." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 4", "2 lignes collées avec succès du presse-papier à la ligne 1.")


Exemple 4

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
; Ouvre le classeur 1
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

; *****************************************************************************
; Colle le format d'une cellule sur d'autres cellules
; *****************************************************************************
_Excel_RangeCopyPaste($oWorkbook1.Activesheet, "A1") ; Copie la cellule vers le presse-papiers
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple5", "Erreur lors de la copie de la cellule A1." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_RangeCopyPaste($oWorkbook1.Activesheet, Default, "B1:E16", Default, $xlPasteFormats) ; Colle le format de la plage cible
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple5", "Erreur lors du collage des cellules." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_RangeCopy-Exemple 5", "Format de la cellule 'A1' collé avec succès en 'B1:E16'.")