FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Comment récupérer la plage de toute la feuille ?
- Comment récupérer les données adjacentes à une cellule ?
- Comment récupérer une ligne ou une colonne complète ?
- Comment agrandir ou rétrécir une plage ?
- Comment décaler une plage de cellule ?
- Comment obtenir et parcourir une plage discontinue ?
- Comment récupérer la plage en cours de la feuille ?
- Comment récupérer les cellule dépendantes/antécédentes ?
- Comment récupérer des plages particulières ?
- Comment trier une plage de cellules ?
Pour récupérer la plage actuelle de la feuille :
Code delphi : | Sélectionner tout |
1 2 3 | rMaPlage : ExcelRange; ... rMaPlage:=MaFeuille.UsedRange[0]; |
Par exemple l'adresse montrée ici n'est pas correcte :
Code delphi : | Sélectionner tout |
1 2 3 | MaFeuille.Range['A2','A4'].EntireRow.Delete(xlUp); showMessage(vartostr(MaFeuille.Cells.SpecialCells(XlCellTypeLastCell,EmptyParam) .Address[True,True,xlA1,False,False])); |
Code delphi : | Sélectionner tout |
1 2 3 | MaFeuille.Range['A2','A4'].EntireRow.Delete(xlUp); showMessage(vartostr(MaFeuille.UsedRange[0].SpecialCells(XlCellTypeLastCell,EmptyParam) .Address[True,True,xlA1,False,False])); |
Pour récupérer la plage de cellules adjacentes sur la gauche à partir de A1 :
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',Mafeuille.Range['A1',EmptyParam].End_[xlToRight]]; |
Pour récupérer la plage de cellules adjacentes vers le bas à partir de A1 :
Code delphi : | Sélectionner tout |
1 2 3 4 5 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',Mafeuille.Range['A1',EmptyParam].End_[xlDown]]; |
Pour récupérer une ligne :
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',EmptyParam].EntireRow; |
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',EmptyParam].EntireColumn; |
Pour modifier la taille de la plage :
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',EmptyParam].Resize[4,5]; |
Passer des valeurs négatives permet de rétrécir la plage.
Pour décaler la plage :
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',EmptyParam].Offset[1,2]; |
C'est la zone sélectionnée qui est décalée, pas le contenu des cellules.
Pour obtenir une plage discontinue :
Code delphi : | Sélectionner tout |
1 2 3 4 | MaPlage : ExcelRange; ... rMaPlage:=ExcelApplication1.Union(mafeuille.Range['A1','A20'], mafeuille.Range['C1','C20'],mafeuille.Range['E1','E20']); |
Code delphi : | Sélectionner tout |
1 2 | for compteur:=1 to rMaPlage.Areas.Count do showmessage(rMaPlage.Areas.Item[compteur].Address[true,true,xlA1,false,false]); |
Renvoie la plage en cours dans laquelle est l'objet Range. On entend par plage en cours, l'ensemble des cellules limitées par une combinaison de lignes et de colonnes vides.
Code delphi : | Sélectionner tout |
1 2 3 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['A1',EmptyParam].CurrentRegion; |
S'entend aux termes des formules de calculs. imaginons que la colonne 5 contient des valeurs numérique. On trouve dans L9C6 (F9) la formule =L9C5+L8C5, dans la cellule L11C6 (F11) la formule =L11C5+L10C5 et dans la cellule L10C7 (G10) la formule = L9C6+L11C6
Code delphi : | Sélectionner tout |
1 2 3 4 5 | MaPlage : ExcelRange; ... rMaPlage:=MaFeuille.Range['G10',EmptyParam].Precedents; for compteur:=1 to rMaPlage.Areas.Count do ShowMessage(rMaPlage.Areas.Item[compteur].Address[true,true,xlR1C1,false,false]); |
Code : | Sélectionner tout |
1 2 3 | R9C6 R11C6 R8C5:R11C5 |
Les cellules vides d'une plage :
Code delphi : | Sélectionner tout |
rMaPlage:=MaFeuille.UsedRange[0].SpecialCells(XlCellTypeBlanks,EmptyParam);
Code delphi : | Sélectionner tout |
rMaPlage:=MaFeuille.UsedRange[0].SpecialCells(xlCellTypeConstants, xlNumbers);
Code delphi : | Sélectionner tout |
rMaPlage:=MaFeuille.UsedRange[0].SpecialCells(xlCellTypeConstants, xlTextValues);
Code delphi : | Sélectionner tout |
rMaPlage:=MaFeuille.UsedRange[0].SpecialCells(xlCellTypeConstants, EmptyParam);
Code delphi : | Sélectionner tout |
rMaPlage:=MaFeuille.UsedRange[0].SpecialCells(xlCellTypeFormulas, xlErrors);
Code delphi : | Sélectionner tout |
1 2 | rMaPlage:=MaFeuille.Columns.ColumnDifferences( MaFeuille.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Offset[1,1]); |
Pour trier une page de cellule utilisez la méthode Range[].Sort.
Le code diffère suivant Excel 97 ou Excel 2000. Dans le cas d'Excel 97 il faut écrire :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Var MonClasseur : _workbook; MaFeuille :_Worksheet; ovFeuille: OLEvariant; begin ExcelApplication1.Connect; MonClasseur:=ExcelApplication1.Workbooks.Open('d:\tuto.xls',False,False, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0); ExcelApplication1.Visible[0]:=true; MaFeuille:=MonClasseur.Worksheets[1] as _worksheet; ovFeuille:=MaFeuille; ovFeuille.Range['J1','L20'].Sort(MaFeuille.Range['J1','J1'], xlAscending, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlGuess, 1, False, xlTopToBottom, EmptyParam, EmptyParam, EmptyParam, EmptyParam); end; |
Code delphi : | Sélectionner tout |
1 2 3 | ovFeuille.Range['J1','L20'].Sort(MaFeuille.Range['J1','J1'], xlAscending, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlGuess, 1, False, xlTopToBottom, EmptyParam); |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes 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 © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.