ouvrir une page avec un format préétabli

mounia

XLDnaute Nouveau
Bonjour,
J'ai créé une macro qui remplit une fiche( d'un type particulier déjà établi), mais pour l'instant elle remplit toujours la feuille "fiche" qui existe , mais je voudrais qu'elle ouvre une nouvelle feuille avec ce format de fiche à chaque fois.Je sais que ca n'a pas l'air compliqué mais je ne sais pas comment faire...
encore une fois merci d'avance
 
G

Guest

Guest
Re : ouvrir une page avec un format préétabli

Bonjour Mounia,

Avec un fichier excel contenat ta macro se serait plus facile de t'aider.

Sinon l'idée:
1 - créer une feuille "fichemodèle" sans données.
2 - en début de macro la copier:
Code:
dim sh as Worksheet
set sh = sheets("fichemodèle").Copy Before:=1
3 - ensuite lancer ta macro sur cette feuille.

A+
 

Hulk

XLDnaute Barbatruc
Re : ouvrir une page avec un format préétabli

Salut Forum, Hasco :), Mounia,

Ou comme dans le fichier joint peut-être... bien sûr la macro "Mise_en_forme" est pour l'exemple.

Cdt, Hulk.
 

Pièces jointes

  • Test.xls
    33 KB · Affichages: 72
  • Test.xls
    33 KB · Affichages: 82
  • Test.xls
    33 KB · Affichages: 84

mounia

XLDnaute Nouveau
Re : ouvrir une page avec un format préétabli

Voici le code .
le gros du code n'est absolument pas intéressant c'est jsute le remplissage d'après une base de données.

Public Sub remplir()

Dim commune As Variant
Dim l As Integer
commune = InputBox("quelle est la commune pour laquelle vous souhaitez remplir la fiche?")
Worksheets("BDD").Activate
Dim nomcommune As Worksheet
'nomcommune.Name = commune

'nomcommune = Worksheets("fiche").Copy
For I = 5 To 15
If Cells(I, 1) = commune Then
l = I
End If
Next
'remplissage Equipements
Worksheets("fiche").Activate
Cells(4, 2) = commune
Cells(11, 2) = Worksheets("BDD").Cells(l, 2)
Cells(12, 2) = Worksheets("BDD").Cells(l, 3)
Cells(13, 2) = Worksheets("BDD").Cells(l, 4)
Cells(14, 2) = Worksheets("BDD").Cells(l, 5)
Cells(15, 2) = Worksheets("BDD").Cells(l, 6)
Cells(16, 2) = Worksheets("BDD").Cells(l, 7)
Cells(17, 2) = Worksheets("BDD").Cells(l, 8)
Cells(18, 2) = Worksheets("BDD").Cells(l, 11)
Cells(19, 2) = Worksheets("BDD").Cells(l, 12)
'VNC
Cells(10, 5) = Worksheets("BDD").Cells(4, 13)
Cells(11, 5) = Worksheets("BDD").Cells(l, 13)

'remplissage investissement
Cells(26, 3) = Worksheets("BDD").Cells(3, 9)
Cells(27, 3) = Worksheets("BDD").Cells(3, 10)
Cells(26, 4) = Worksheets("BDD").Cells(l, 9)
Cells(27, 4) = Worksheets("BDD").Cells(l, 10)

For I = 1 To 3
For j = 1 To 3
Cells(27 + I, 1 + j) = Worksheets("BDD").Cells(l, 13 + j + 3 * (I - 1))
Next j
Next I

'remplissage usagers
For I = 1 To 3

Cells(33, 1 + I) = Worksheets("BDD").Cells(l, 26 + I)
Cells(34, 1 + I) = Worksheets("BDD").Cells(l, 29 + I)
'remplissage consommation
Cells(38, 1 + I) = Worksheets("BDD").Cells(l, 32 + I)
Next I

For I = 1 To 6
Cells(44, 1 + I) = Worksheets("BDD").Cells(l, 35 + I)
Cells(45, 1 + I) = Worksheets("BDD").Cells(l, 41 + I)
Next I
For j = 1 To 4
For I = 1 To 6
Cells(46 + j, 1 + I) = Worksheets("BDD").Cells(l, 47 + 4 * (j - 1) + I)
Next I
Next j

For j = 1 To 6
For I = 1 To 6
Cells(51 + j, 1 + I) = Worksheets("BDD").Cells(l, 71 + 6 * (j - 1) + I)
Cells(58 + j, 1 + I) = Worksheets("BDD").Cells(l, 107 + 6 * (j - 1) + I)
Next I
Next j

'remplissage régie
Cells(70, 4) = Worksheets("BDD").Cells(l, 144)
Cells(71, 4) = Worksheets("BDD").Cells(l, 145)

'remplissage grille tarifaire

Cells(78, 4) = Worksheets("BDD").Cells(l, 146)
Cells(79, 4) = Worksheets("BDD").Cells(l, 147)
Cells(81, 4) = Worksheets("BDD").Cells(l, 148)
End Sub
 
G

Guest

Guest
Re : ouvrir une page avec un format préétabli

Re,
Salut Hulk;)

Mounia, c'est presque ça.


1 - Mets tes feuilles en références, cela simplifie beaucoup les écriture et la compréhension.

2 - Worksheets("fiche").Copy (sans destination copie dans un nouveau classeur)

3 - ne pas oublier le Set pour initialiser un objet (ici une feuille)

Exemple
Code:
Dim shBDD as worksheet, nomcommune As Worksheet

[SIZE=3][COLOR=red]Set[/COLOR][/SIZE] shBDD = ThisWorkbook.Sheets("BDD")
[SIZE=3][COLOR=red]Set[/COLOR][/SIZE] nomcommune = Worksheets("fiche").Copy 
 
With nomcommune
        .Name = commune

        .Cells(4, 2) = commune
        .Cells(11, 2) = shBDD.Cells(l, 2)
        .Cells(12, 2) = shBDD.Cells(l, 3)
        .Cells(13, 2) = shBDD.Cells(l, 4)
 '.................etc.....
End With

A+
 
G

Guest

Guest
Re : ouvrir une page avec un format préétabli

Re Mounia,

1- Pour répondre à ta question sur set:
VBA manipule des variables et des objets.

Une variable déclarée ou non s'initialise directement et peut contenir différent type de données. Exemple:

Code:
MaVar = "Toto"
Ou
Code:
'Déclaration de la variable de nature 'String'
Dim MaVar As String 
'Utilisation
MaVar = "Toto"
Une variable Objet quant à elle ne peut contenir qu'une référence à un objet et son initialisation se fait avec le mot clef 'Set'
Code:
'Déclaration d'une variable objet devant contenir une référence à une feuille de calcul
Dim MaVarObjet as Worksheet
Utilisation:
Code:
'Initialisation d'une référence à la feuille "MaFeuille" du classeur actif
Set MaVarObjet = ActiveWorkBook.Sheets("MaFeuille")

Ici le Set n'a rien à voir avec le Set des procédures property ou get qui s'utilisent dans des modules de classe ou module objets (modules de feuille ou modules de userForm).

2 - Si tu as une erreur de type "objet requis" c'est que tes variables objets sont mal initialisées ou que l'objet qu'elle référencient n'existe pas.

Je soupçonne que la feuille désignée par la variable(commune) n'est pas dans le bon classeur

Code:
'Déclaration des variables objets feuille
Dim shBDD as worksheet, nomcommune As Worksheet
 
'La feuille "BDD" doit être dans le classeur qui contien la macro (ThisWorkBook)
Set shBDD = ThisWorkbook.Sheets("BDD")
 
'Copier la feuille "fiche" dans un nouveau classeur qui devient le classeur actif
ThisWorkbook.Worksheets("fiche").Copy
 
'Initialisation de la feuille destination du classeur actif (nouvellement créé)
set nomcommune = ActiveWorkbook.Sheets("fiche")

Lorsque tu travailles sur des feuilles et des classeurs il faut bien distinguer quelle feuille appartient à quel classeur.

Ensuite essaie de choisir des noms qui indique ce sur quoi tu travaille:
nomcommune, n'est pas très explicite.

je mettrais : shCommune (sh pour workSheet ou Sheet) tu sais ainsi d'emblée qu'il doit s'agir d'une référence à une feuille et nom à une variable string contenant le nom d'une commune.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 958
Membres
103 990
dernier inscrit
lamiadebz