Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

C++

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > MS Office > Excel > Gestion des classeurs
        Comment définir le nombre de feuilles par défaut lors de l'ouverture d'un classeur ?
        Comment récupérer l'ensemble des classeurs ouverts ?
        Comment ouvrir un fichier Excel ?
        Comment ouvrir un classeur en lecture seule ?
        Comment ouvrir un classeur au format csv ?
        Comment ouvrir un classeur protégé par un mot de passe ?
        Comment ajouter un nouveau fichier Excel ?
        Comment enregistrer mon classeur ?
        Comment enregistrer un classeur en lui attribuant un nom ?
        Comment fermer un classeur ?
        Comment récupérer un classeur dans un objet ?
        Comment connaître le nombre de classeurs ouverts ?
        Comment protéger ou déprotéger un classeur ?
        Comment mettre le calendrier depuis 1904 ?



Comment définir le nombre de feuilles par défaut lors de l'ouverture d'un classeur ?
Créé le 27/10/2004[haut]
auteur : Ricky81
A partir d'un Variant représentant l'instance d'Excel, nous allons définir la propriété SheetsInNewWorkbook.

vMSExcel.OlePropertySet("SheetsInNewWorkbook", nbSheets);
lien : faq Comment créer une nouvelle instance d'Excel ?
lien : faq Comment récupérer l'instance active d'Excel ?

Comment récupérer l'ensemble des classeurs ouverts ?
Créé le 27/10/2004[haut]
auteur : Ricky81
A partir d'un Variant représentant l'instance d'Excel, nous allons récupérer l'ensemble des classeurs.

Variant vXLWorkbooks;
vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
Il est nécessaire de passer par cet objet même s'il n'y a pas de classeurs, par exemple pour ouvrir un classeur.

lien : faq Comment créer une nouvelle instance d'Excel ?
lien : faq Comment récupérer l'instance active d'Excel ?
lien : faq Comment définir le nombre de feuilles par défaut lors de l'ouverture d'un classeur ?

Comment ouvrir un fichier Excel ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons ouvrir un classeur existant.

Variant vWorkbook;
// vXLWorkbooks représente l'ensemble des classeurs
// vFileName est un Variant sous la forme chaîne de caractères correspondant au fichier à ouvrir
vXLWorkbook = vXLWorkbooks.OleFunction("Open",vFileName); // on récupère un Variant correspondant au classeur ajouté
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ajouter un nouveau fichier Excel ?
lien : faq Comment ouvrir un classeur en lecture seule ?
lien : faq Comment ouvrir un classeur protégé par un mot de passe ?

Comment ouvrir un classeur en lecture seule ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons ouvrir un classeur existant.

Variant vWorkbook, vReadOnly;
// vXLWorkbooks représente l'ensemble des classeurs
vReadOnly = true;
// vFileName est un Variant sous la forme chaîne de caractères correspondant au fichier à ouvrir
vWorkbook = vWorkbooks.OleFunction("Open", vFileName, Unassigned, vReadOnly);
lien : faq Comment ouvrir un fichier Excel ?
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ouvrir un classeur protégé par un mot de passe ?
lien : faq Comment ouvrir un classeur au format csv ?

Comment ouvrir un classeur au format csv ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons ouvrir un classeur existant en spécifiant le séparateur recherché.

Variant vWorkbook;
// vXLWorkbooks représente l'ensemble des classeurs
// vFileName est un Variant sous la forme chaîne de caractères correspondant au fichier à ouvrir
vWorkbook = vWorkbooks.OleFunction("Open", vFileName, Unassigned, Unassigned, vSeparator);
// vSeparator = valeur du séparateur
Les valeurs possibles pour vSeparator vont de 1 à 5 :
  • 1 : tabulation
  • 2 : point virgule
  • 3 : espace
  • 4 : point virgule
  • 5 : aucun séparateur

lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ouvrir un fichier Excel ?
lien : faq Comment ouvrir un classeur en lecture seule ?
lien : faq Comment ouvrir un classeur protégé par un mot de passe ?
lien : faq Comment ajouter un nouveau fichier Excel ?

Comment ouvrir un classeur protégé par un mot de passe ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons ouvrir un classeur existant protégé par mot de passe.

Variant vWorkbook;
// vXLWorkbooks représente l'ensemble des classeurs
vWorkbook = vWorkbooks.OleFunction("Open", vFileName, Unassigned, Unassigned, Unassigned, vPwd);
// vFileName est un Variant sous la forme chaîne de caractères correspondant au fichier à ouvrir
// vPwd = mot de passe
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ouvrir un fichier Excel ?
lien : faq Comment ouvrir un classeur en lecture seule ?
lien : faq Comment ouvrir un classeur au format csv ?

Comment ajouter un nouveau fichier Excel ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Nous allons ajouter un nouveau classeur à notre ensemble de classeurs.

Variant vXLWorkbook;
// vXLWorkbooks représente l'ensemble des classeurs
vXLWorkbook = vXLWorkbooks.OleFunction("Add"); // on récupère un Variant correspondant au classeur ajouté
Il est à noter que même si vous n'avez pas encore de classeur ouvert, vous devez nécessairement passer par l'objet vXLWorkbook.

lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ouvrir un fichier Excel ?

Comment enregistrer mon classeur ?
Créé le 27/10/2004[haut]
auteur : Ricky81
L'objet cible est un Variant (vXLWorkbook) correspondant au classeur à sauver.

vXLWorkbook.OleProcedure("Save");

Comment enregistrer un classeur en lui attribuant un nom ?
Mise à jour le 10/12/2007[haut]
auteurs : Ricky81, blondelle
L'objet cible est un Variant (vXLWorkbook) correspondant au classeur à sauver.

// vFileName est un Variant correspondant au nom du classeur
vXLWorkbook.OleProcedure("Saveas", vFileName);

FileFormat peut prendre différentes valeurs suivant le format de sauvegarde désiré, ce qui
permet de charger un fichier sous un format et de le sauvegarder sous un autre format

FileFormat = 6; // fichier CSV (extension .csv)
FileFormat = -4158; //fichier Texte et separateur tabulation (extension .txt)
FileFormat = 36; //fichier Texte et separateur espace (extension .prn)
FileFormat = -4143; // valeur de xlNormal "sauvegarde sous format classeur excel"

Description de la fonction complète
tous les paramètres de la sauvegarde sont décrits


Variants FileFormat, Mot_passe, Password, WriteResPassword, ReadOnlyRecommended;
Variants vFileName, CreateBackup, Nom_Du_Fichier;
// utiliser Unassigned si le paramètre n'est pas utilisé
Mot_passe = Unassigned; //"Mon_Mot_De_Passe" pour la protection du fichier
Password = Mot_passe; // mot de passe pour protéger le fichier
WriteResPassword = Mot_passe; // confirmation du mot de passe
ReadOnlyRecommended = false; // fichier en lecture seule (False True Unassigned)
// création d'une copie si le fichier existe déjà
CreateBackup = false; // création d'une copie (False True Unassigned)

Nom_Du_Fichier = le nom du fichier avec extension .csv ou .txt ou.prn ou .xls

// sauvegarde du fichier sous le format desire 
vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Nom_Du_Fichier";
vXLWorkbook.OleProcedure("Saveas", vFileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup);

Comment fermer un classeur ?
Créé le 27/10/2004[haut]
auteur : Ricky81
La version suivante ferme le classeur avec la possibilité d'avoir une confirmation par l'utilisateur en cas de modifications non enregistrées.

vXLWorkbook.OleFunction("Close");
Voici une seconde version qui permet de préciser si les modifications non enregistrées doivent être intégrées ou non.

vXLWorkbook.OleFunction("Close", vSaveChanges); // vSaveChanges est un booléen (ou un Variant contenant true ou false)
Cette dernière version permet l'enregistrement dans un nouveau fichier (les modifications ne sont pas répercutées dans le fichier en cours). Le nouveau fichier est créé (ou écrasé) uniquement si le fichier en cours a été modifié depuis la dernière sauvegarde.

vXLWorkbook.OleFunction("Close", true, vFileName); 

Comment récupérer un classeur dans un objet ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Si le classeur n'est pas encore ouvert, il est plus aisé de récupérer cet objet lors de l'ouverture du classeur ou de l'ajout d'un nouveau classeur (cf. autres Q/R).
Sinon, il est possible de récupérer un objet sur un classeur à partir de l'objet gérant l'ensemble des classeurs.

vXLWorkbook = vXLWorkbooks.OlePropertyGet("Item", vIndex); 
// vIndex correspond à la "position" du classeur au niveau de l'application (indice commençant à 1)
Malheureusement il n'est possible que de passer un entier en paramètre. Vous pourrez par exemple tester la propriété Name des classeurs pour trouver le classeur recherché. Voici un exemple :

if (vXLWorkbooks.OlePropertyGet("Item", 1).OlePropertyGet("Name") == "monFichier.xls" )
{
   ...
}
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment ajouter un nouveau fichier Excel ?
lien : faq Comment ouvrir un fichier Excel ?
lien : faq Comment connaître le nombre de classeurs ouverts ?

Comment connaître le nombre de classeurs ouverts ?
Créé le 27/10/2004[haut]
auteur : Ricky81
Il suffit simplement d'interroger la propriété Count sur l'objet correspondant à l'ensemble des classeurs.

// vXLWorkbooks est de type Variant
int nb = vXLWorkbooks.OlePropertyGet("Count");
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?

Comment protéger ou déprotéger un classeur ?
Créé le 27/10/2004[haut]
auteur : Ricky81
La protection d'un classeur agit sur la structure et sur les feuilles (supprimer, renommer, déplacer les feuilles) de façon générale (le contenu n'étant pas protégé).
Dans la suite, le Variant vWorkbook correspond à un classeur.

vWorkbook.OleProcedure("Protect", "motdepasse", true, true);
Le premier booléen indique que la protection doit être activée pour la structure du classeur, alors que le second concerne les feuilles.

Pour supprimer la protection :

vWorkbook.OleProcedure("UnProtect", "motdepasse");
lien : faq Comment récupérer l'ensemble des classeurs ouverts ?
lien : faq Comment protéger ou déprotéger une feuille ?

Comment mettre le calendrier depuis 1904 ?
Créé le 27/10/2004[haut]
auteur : Superstivix
L'objet cible est un Variant (vXLWorkbook) correspondant au classeur dont on souhaite modifier le paramétrage.

vXLWorkbook.OlePropertySet("Date1904", true);


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

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.

Contacter le responsable de la rubrique C++

Partenaire : Hébergement Web