Importer un classeur
 

IMPORTER un classeur excel enregistré en client


1* Créer un fichier circlips_01.xls comme le fichier ci-contre. Ce fichier sera sauvegardé dans le dossier de travail ; C’est à dire le dossier où se trouvera aussi le fichier import_01.xls ci-après. La feuille « feuil1 » sera renommée « circlips1 » .


2* Créez alors un second fichier import_01.xls sur le modèle du fichier ci-dessous. Il est pratique de sauvegarder le fichier dans le même dossier que le précédent. Ce dossier est considéré comme dossier de travail et doit avoir été ouvert sous excel pour que l’import puisse se faire. Sinon il faut donner dans le script le chemin absolu du fichier dans la fonction « open ». Dans le bouton « IMPORTER » mettez le script qui se trouve sur la page 2.


Il suffit alors de cliquer sur ce bouton pour déclencher l’import, c’est à dire l’ouverture du fichier circlips_01.xls et l’ajout des données de ce fichier sur la feuil1 de notre classeur import_01.xls. On remarque qu’il est nécessaire d’utiliser une feuille de transfert qui sera ensuite détruite. Ici la feuille de transfert se trouve être « circlips1 » sur le classeur import_01.xls


 


Private Sub importer_Click()

'on importe le classeur circlips_01.xls qui doit être dans le dossier courant

Workbooks.Open ("circlips_01.xls")

'on part sur la feuille circlips1

Worksheets("circlips1").Select

'on sélectionne la dite feuille sur la première cellule à copier

Sheets("circlips1").Cells(5, 1).Select

'pour récupérer le nombre de lignes à copier

lignes = ActiveSheet.UsedRange.Rows.Count

'on va créer une feuille circlips1 sur le classeur actuel

Worksheets("circlips1").Copy ThisWorkbook.Sheets("feuil1")

'on active le fichier circlips_01.xls

Workbooks("circlips_01.xls").Activate

'pour le refermer

ActiveWindow.Close

'on repart sur notre classeur import_01

ThisWorkbook.Activate

'et on importe les données de la feuille circlips1 vers la feuille feuil1

'elles sont copiées dans la ligne 3 (n=3) et les suivantes à partir de la ligne 5 et suivante de la feuille circlips1

For n = 3 To lignes

Sheets("Feuil1").Cells(n, 2) = Sheets("circlips1").Cells(n + 2, 2)

Sheets("Feuil1").Cells(n, 3) = Sheets("circlips1").Cells(n + 2, 3)

Sheets("Feuil1").Cells(n, 4) = Sheets("circlips1").Cells(n + 2, 4)

Sheets("Feuil1").Cells(n, 5) = Sheets("circlips1").Cells(n + 2, 5)

Next n

'on détruit alors la feuille intermédiaire circlips1

Worksheets("circlips1").Delete

'et on remet feuil1 comme feuille active

Worksheets("feuil1").Select

End Sub

Exercices


On peut imaginer que la « feuil2 » de « import_01 » puisse servir à faire une facture. On y saisirait les diamètres, le nombre désiré pour chacun et la facture se compléterait en indiquant le nombre de paquets nécessaires et les prix unitaire et total.


Dans un premier temps on fera une facture d’une seule ligne dans lequel le client devra saisir le diamètre et la quantité avant de cliquer un bouton « calculer » qui lui complétera sa facture en utilisant les données de la « feui1 ». Attention il faudra que le script de ce bouton soit capable de déterminer le nombre de paquets en fonction du nombre de circlips commandés ! Ensuite il faudra déterminer le prix unitaire en fonction du nombre de paquets … Puis enfin le prix à payer …


Dans un second temps on peut imaginer que le client puisse saisir dans sa facture un « certain » nombre de circlips de différents diamètres ! Il faudra alors que le script du bouton « calculer » puisse déterminer le nombre de lignes à compléter sur la facture ! Cela peut être pratique pour les sites de restauration qui fournissent la plupart de nos écoles et collèges comme le site de pizzas par exemple.



On pourra ensuite traiter l’import du classeur circlips_01.xls non pas à partir d’une machine client mais à partir d’un serveur via un lien Internet. Cela pourrait permettre de faire une mise à jour de ce fichier d’une façon extérieure à l’entreprise…. Bien entendu il faudra, dans ce cas, que le dossier sur lequel sera le fichier soit protéger par un fichier unix .htaccess ! ! !

Cela sera la seconde étape ! Pour ce faire il serait bien que vous ayez un espace chez un hébergeur (free ou autre !)