bonsoir,
je travaille sur un fichier Excel en pilotage OLE depuis D2007
une fois les données rentrées sur la feuille1 je dois dupliquer cette feuille
Quel methodes ou fonction il faut utiliser pour dupliquer la feulle courante ?
merci
Version imprimable
bonsoir,
je travaille sur un fichier Excel en pilotage OLE depuis D2007
une fois les données rentrées sur la feuille1 je dois dupliquer cette feuille
Quel methodes ou fonction il faut utiliser pour dupliquer la feulle courante ?
merci
Salut,
rechercher Copy dans l'aide en ligne de VBA Excel ;)Citation:
Envoyé par looping
Citation:
Méthode Copy telle qu'elle s'applique aux objets Chart, Charts, Sheets, Worksheet et Worksheets.
Cet exemple montre comment copier Sheet1 et placer la copie après Sheet3.
Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")
bonjour,
je n'arrive pas à adapter votre ligne de code sur mon project ?
j'ouvre l'instance Excel "vMSExcel"
ensuite le classeur "vXLWorkbooks" qui s'apelle "of.xls"
puis le feuille "vWorksheet"qui s'appelle "trame"
maintenant j'aimerais dupliquer cette feuille 'trame' et qu'elle se renomme automatiquement: trame(x)/trame(x+1)/trame(x+..)/trame(x+n).
x,n:variable integer
x variable d'itération initialisée à 1 au départ
n étant le nombre de duplication que je souhaite
voici le code:
merciCode:
1
2
3
4
5
6
7
8
9
10
11
12 vMSExcel := CreateOleObject('Excel.Application'); vMSExcel.Visible := true; vLink := unassigned; aFileName :=ExtractFilePath(Application.ExeName) + 'of.xls'; vXLWorkbooks := vMSExcel.Workbooks; vXLWorkbook := vXLWorkbooks.Open(aFileName, vLink, false); aSheetName := 'trame'; vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
Moi quand j'arrive pas à le faire par le code, je vais dans Excel, je crée une nouvelle macro et je fais à la main la manip que j'ai envie d'automatiser.
Excel me crée automatiquement du code, j'ai plus qu'à regarder comment il fait...
Dans le cas présent, le code est :
En Delphi ça pourrait donner quelque chose comme :Code:
1
2 Sheets("Feuil1").Copy Before:=Sheets(2)
à vérifier...Code:
1
2
3
4 aSheetName := 'trame'; vWorksheet := vXLWorkbook.WorkSheets[aSheetName]; vWorksheet.copy(After:=vWorksheet)
Salut,
C'est compréhensiblen, c'est du VBA. C'était juste une piste de recherche :Citation:
Envoyé par looping
L'approche de EMC51 me semble approprié. Quant à la manipulation du nom de la feuille XL voir avecCode:
1
2
3
4
5 _Worksheet = interface(IDispatch) ... procedure Copy(Before: OleVariant; After: OleVariant; lcid: Integer); safecall; ...
Code:property Name: WideString read Get_Name write Set_Name;