Report automatique excel

Dad -  
 dad -
Bonjour,

J'ai un fichier excel qui me créer automatiquement avec une macro d'après une feuille modéle un feuille par jour du mois :
exemple
01 JUILLET 2011
02 JUILLET 2011 etc ect
et cela et sans fin en fonction de la plage de date que je défini.

Ce que j'ai besoin c'est que le total de la cellule M23 de la feuille du 01 JUILLET se reporte en cellule M3 de la feuille du 02 JUILLET et etc etc jusqu'a la dernier feuille

Est ce que qq aurait la macro qui va bien ?

Merci d'avance

A voir également:

5 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour

nbre = ThisWorkbook.Sheets.Count
For cptr = 2 To nbre
      Sheets(cptr).Range("M3") = Sheets(cptr - 1).Range("M23")
 Next
--


mais ça peut se faire sans macro...
Michel
0
Dad
 
Bonjour Michel
avec ce code comment dois je faire ? créer une macro ou le saisir dans la cellule avec = ?

Merci d'avance
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Re,

j'ai l'impression d'avoir mal compris ta demande: tu crées un classeur donc tu cherches à écrire la formule et non reporter la valeur de M3 dans M23 onglet suivant

si oui, tu peux copier-coller ces lignes dans ta macro qui crée le classeur et à la suite de ton code qui crée et nomme les jours du mois (ou tu fais une macro séparée)


Dim nbre As Byte, cptr As Byte 
nbre = ThisWorkbook.Sheets.Count 
For cptr = 2 To nbre 
      Sheets(cptr).Range("M3").FormulaLocal = "='" & Sheets(cptr - 1).Name & "'!M23" 
 Next 
0
Dad
 
Oui elle fonctionne bien elle me créer super bien les feuilles d après un modèle
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Sauf que ton truc ne marche pas avec win32
puisque tu trouves ce code est super malgré ses incohérences et maladresses (ca marche mais c'est très lent et bouffe de la mémoire )
je ne suis pas de niveau pour bosser là dessus et je ne peux rien pour toi

bon WE
0
dad
 
je ne connais pas trop non plus en code et macro !
je dis que c'est super car j'ai trouvé ça sur un forum et en faisant un copier-coller il fait exactement ce que je voulais à savoir me créer des feuilles automatiquement d'après un modèle.
Par contre il me manque la fonction report comme j'explique plus haut.
Mais s'il existe mieux et plus rapide je suis preneur.
Je ne connais même pas la différence entre basics ou va pour moi c'est du grec tout ça !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dad
 
RE re Michel

je suis pas très très fort sauf en copier coller ;-)

voici la macro que j'utilise merci de me dire comment intergrer ta macro:
Private Sub Copier_Nommer_Feuilles()
Dim oDat, i As Long

30 With [C20] 'Cellule à partir de laquelle sont placés les noms des feuilles _
à créer. Il peut y en avoir autant qu'on veut.

40 If Cells(Rows.Count, .Column).End(xlUp).Cells(1, 1).Row < .Row Then GoTo E
'Si toutes les cellules en-dessous de B11 sont vides, aller à E _
(c'est-à-dire ne rien faire).

50 With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
'Ligne "technique" pour accélérer l'exécution.

60 oDat = Range(.Cells.Offset(-1, 0), Cells(Rows.Count, .Column).End(xlUp)).Value
'Place dans le tableau oDat (une colonne) les valeurs de B11 à Bn, _
où n est le numéro de la dernière ligne non vide de la colonne B.

70 For i = 2 To UBound(oDat, 1) 'Pour i variant de 2 au nombre de lignes _
du tableau oDat...

75 On Error GoTo M 'Pour sortir de la procédure si la feuille modèle _
n'existe pas.

80 Sheets("Feuille_modèle").Copy After:=Sheets(Sheets.Count) 'Ajoute une copie _
de la feuille "Feuille_modèle" à la fin du classeur.

85 Sheets(Sheets.Count).[I22].Value = CStr(oDat(i, 1)) 'No comment.

90 On Error GoTo S 'Si une erreur se produit dans la ligne qui _
suit, elle est ignorée, et l'exécution continue à la ligne _
suivante après le traitement de l'erreur (ligne S).

100 Sheets(Sheets.Count).Name = CStr(oDat(i, 1)) '...renomme _
la feuille créée avec le nom qui est dans la ligne i de la _
première colonne du tableau oDat. Si une valeur est manquante _
dans le tableau oDat ou si ce nom existe déjà dans le classeur, _
une erreur se produit. Grâce à la ligne 90 cette erreur est _
ignorée et l'exécution du code continue.

110 On Error GoTo 0 'A partir d'ici, les éventuelles erreurs ne sont plus _
ignorées.

120 Next 'Reprendre l'exécution à la ligne 75 avec la valeur suivante de i, _
tant que la dernière ligne du tableau oDat n'est pas atteinte.

130 With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
'Ligne "technique" pour rétablir les paramètres modifiés à la ligne 5. _
Le code fonctionne aussi si les lignes 5 et 14 sont supprimées, mais _
l'exécution est plus lente.

E: End With

Exit Sub

M: MsgBox "Le nom de la feuille modèle est incorrect.": Resume E

'Suppression de la feuille créée si une erreur survient ligne 100.
S: With Application: .DisplayAlerts = False: Sheets(Sheets.Count).Delete: .DisplayAlerts = True: End With
Resume Next

End Sub
-1
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Ta macro fonctionne t 'elle (ce n'est pas du VBA mais un vieux basic) ?
0