[Macro EXCEL] probleme d'affectation workbook

Renolerigolo Messages postés 1 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 22 juin 2004 - 22 juin 2004 à 16:51
mebilo Messages postés 8 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 23 août 2004 - 22 juin 2004 à 22:28
j'ai deja posté ce mail dans "g besoin d'aide" ms il a disparu!!:-(

Bonjour,
J'ai un petit souci avec une macro excel permettant de recopier des cellules d'un workbook vers un autre.

Pour ceci j'ai besoin d'affecter chaque workbook a une variable, je fais :
Dim cotation As Excel.Worksheet
Dim master As Excel.Worksheet

Set cotation = ActiveWorksheet
ChDir "C:\Home\fabre_r\Worksheet"
Workbooks.Open Filename:="C:\Home\fabre_r\Worksheet\TECHPUB2004.xls"
Sheets(master).Select
Range("c11").Select
Set master = ActiveWorksheet

Ceci est destiné a etre dans une macro , mais je n'arrive pas a affecter le workbook qui sera ouvert quand je lancerais la macro a partir d'un bouton a mes variables "cotation" et "master"

En fait le probleme est "Comment affecter le workbook ouvert (qui peut avoir differents noms) a ma variable "cotation" "

Cette macro sera affectée a un bouton situé dans ledit workbook

Comme vous pouvez le voir je débute merci de votre aide...

1 réponse

mebilo Messages postés 8 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 23 août 2004
22 juin 2004 à 22:28
Je n'ai pas bien compris ce que tu essaies de faire mais le principe de la programmation VBA sous Excel est le suivant :
- il faut distinguer la collection d'objets et l'objet en lui-même : une collection contient plusieurs objets (comme Workbooks = collection contenant plusieurs Worksheets), un objet est par ex. WorkSheet (le 'S' désigne souvent la collection, sans le 'S' désignant l'objet)
- Excel utilise la base 1 : ce qui signifie que l'on pointe vers le 1er objet avec l'indice 1.

Supposons que je veux copier depuis un classeur (workbooks) OUVERT (il doit être ouvert et visible sous mes yeux) :

Nom du Workbooks OUVERT : N'importe quel nom
Feuille : Feuil1
Cellule que je veux copier : A1 (1,1)

...vers mon nouveau classeur de :

Nom du nouveau fichier : Cotation
Feuille : Feuil2
Cellule de destination : B3 (2,3)

...alors j'écris le code de mon bouton "cmd_Test" tel que :

<!---------------- code ------------->

'Je force la déclaration des variables
Option Explicit

'Déclaration Variables XLS
Private MonApp As Excel.Application
Private MaFeuille As Excel.Worksheet

Private Sub cmd_Test_Click()

'Je déclare mes paramètres
Dim monChemin as String
Dim monFichier as String

'Je paramètre mes variables
monChemin = "C:\Home\fabre_r\Worksheet"
monFichier = "TechPub2004"

'J'instancie l'application Excel
Set MonApp = New Excel.Application
'Le rendre visible (masqué par défaut)
MonApp.Visible = True
'Je force Excel à utiliser le repère du type [Coordonnées XY]
MonApp.ReferenceStyle = xlR1C1
'J'ajoute un nouveau classeur
MonApp.Workbooks.Add
'Je pointe vers la première feuille de mon nouveau classeur
Set MaFeuille = MonApp.Worksheets("Feuil2")

'Je commence le copiage
MaFeuille.Cells(2,3) = ActiveWorkbook.Sheets("Feuil1").Cells(1, 1)
'Je sauve mon classeur copié devenant ACTIF
MonApp.ActiveWorkbook.SaveAs (monChemin & "" & monFichier & ".xls")

'Je libère la mémoire allouée
Set MaFeuille = Nothing
'Je quitte Excel
MonApp.Quit
'Je libère la mémoire
Set MonApp = Nothing

End Sub

<!---------------- fin du code -------------!>

Voilà, cela devrait t'aider à mieux comprendre.
Je n'ai pas la prétention de t'apprendre de quoi que ce soit, y'en aurait certainement d'autres qui savent mieux faire que moi.

Iconito mebilo :question)
0