Sommer deux plages sur deux classeurs.

mawua

XLDnaute Occasionnel
Bonjour le forum et les amis du forum.

La question d'avant le week-end.
J'ai deux classeurs.
Le premier est un avis de situation pour le mois 0 avec des calculs des formules des renvois d'infos et un minimum de case a remplir (case violette= saisie obligatoire). Appelons le classeur WB0. J'ai une plage concernant le mois en cours et une plage concernant le cumul.
Le deuxième est en fait la copie de WB0 pour le mois suivant.Appelons le WB1.
Je génère WB1 par un bouton en Feuil qui nomme le nouveau classeur selon le numéro de situation.
Ce que je voudrais c'est que la plage "Montant du mois" et "Cumul" de WB0 soit sommée et reportée dans la plage Cumul de WB1. Il n'y aurait plus qu'a renseigner le Montant du mois de WB1 et le tour serait joué.

J'ai tenter d'imbriquer des formules vba mais je sais pas faire. Vous aller voir c'est fait avec les pieds. Il y a une fonction (Sous feuil1) qui créer le nouveau fichier, le renomme et fait appel à un autre fonction (dans un module) qui copie et colle les plages.
C'est pas la peine de faire attention à la Feuil3 c'est pas pour tout de suite.

Si le coeur vous en dis de jeter un oeil.
Gros merci
 

Pièces jointes

  • Modele.zip
    27.3 KB · Affichages: 38
  • Modele.zip
    27.3 KB · Affichages: 37
  • Modele.zip
    27.3 KB · Affichages: 38
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Sommer deux plages sur deux classeurs.

Bonsoir

effectivement, Week End

une piste

tu as un classeur modèle
tu crées un bouton enregistrer qui te permet de sauvegarder ton mois (copier coller dans un nouveau classeur et en général on protège pour empêcher les modifications ultérieures sinon çà ne sert à rien) puis mets à jour tes colonnes dans le modèle, qu'elle enregistre

cela te conviendrait?

si oui, ce sera la semaine prochaine
 

mawua

XLDnaute Occasionnel
Re : Sommer deux plages sur deux classeurs.

Salut ERIC S

La piste que tu me propose est beaucoup plus économique en programmation (et donc en temps. Et le temps le WE c'est sacré ! ) et plus astucieuse que ce que j'avais en tête.
Et oui, plus besoin d'enregistrer d'un classeur à l'autre puisque les opérations de calcul se font dans le meme (classeur).

Pour ce qui est de le faire, là je fais un break. Donc je verrais Laaannndi pour la mise en oeuvre.
Puisque je n'ai plus à changer de classeur, ça devrait être dans mes cordes. Si j'ai un soucis je mettrai à jour ce topic.

Bonne soirée.
Hey mais c'est l'heure de l'apéro ????
 

mawua

XLDnaute Occasionnel
Re : Sommer deux plages sur deux classeurs.

Bonjour le forum,
Bonne semaine à tous.

Le problème à dérivé mais j'ai preferé ne pas créer de nouveau fil.
Voilà où j'en suis du code qui copie la colonne du cumul dans sa voisine de droite (selon la methode proposée par ERIC S).
Là où ça coince, c'est au moment d'enregistrer l'ancien document.
J'ai fais le choix d'un SaveAs avec proposition de nom d'enregistrement.
Mais en cas d'annulation,la macro plante.

Voilà le contenu du module, un bouton fait appel à ces 3 fonctions en page 1

Sub SaveSituation()
Dim NSit As Integer

NSit = ActiveSheet.Range("E29").Value
ActiveWorkbook.SaveAs Filename:="Situation " & NSit & ".xls"
End Sub


Sub Cumulenprecedant()

With ThisWorkbook.Sheets("page 2")

.Range("E27:E32").Copy
.Range("F27").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=False
Application.CutCopyMode = False
.Range("G27").Value = "0"
.Range("G28").Value = "0"
End With
End Sub

Sub NouveauNumero()

Dim NNSit As Integer

NNSit = Sheets("page 1").Range("E29").Value
Sheets("page 1").Range("E29").Value = NNSit + 1
Sheets("page 1").Range("E30").Activate
MsgBox ("La nouvelle page à été créée avec succès.Veuillez renseigner la date")

End Sub

Comment parer au plantage de la macro d'enregistrement.
 

ERIC S

XLDnaute Barbatruc
Re : Sommer deux plages sur deux classeurs.

re

pas trop letemps pour l'instant , regared l ecode ci après

Dim chemin As String, nomfichier As String, nomfichier1 As String
'définit chemin
chemin = "E:\FACTURE\" & Format(Cells(1, 3).Value, "mmmmyy") & "\"
'mémorise nom fichier actuel
nomfichier = ActiveWorkbook.Name
'ouvre nouveau fichier
Workbooks.Add
nomfichier1 = ActiveWorkbook.Name
'rebascule sur modèle pour copie
Windows(nomfichier).Activate
Cells.Select
Selection.Copy
Range("A1").Select
'rebascule sur nouveau pour colle
Windows(nomfichier1).Activate
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
'sauve nouveau avec nom de fichier récupéré dans cellule
ActiveWorkbook.SaveAs FileName:=chemin & Cells(3, 4) & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close
 

mawua

XLDnaute Occasionnel
Re : Sommer deux plages sur deux classeurs.

Salut ERIC
J'ai pas mal remanié la macro parce que j'inversai l'ordre de sauvegarde.
Avec le code au dessus, après enregistrement je me retrouvais systématiquement avec un fichier ouvert avec un numéro de retard et non enregistré. C'est plutôt perturbant et ça induit en erreur.

Donc j'ai farfouillé et suis arrivé à ça. C'est plutôt différent de ce que tu me propose.
De plus le nom du fichier sauvegarder n'a pas besoin d'être unique. Aux utilisateurs de s'organiser de bonne architecture de repertoire.

Sub SaveSituation()

ActiveWorkbook.Save
End Sub


Sub Cumulenprecedant()

With ThisWorkbook.Sheets("page 2")

.Range("E27:E32").Copy
.Range("F27").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=False
Application.CutCopyMode = False
.Range("G27").Value = "0"
.Range("G28").Value = "0"
End With
End Sub

Sub NouveauNumero()

Dim NNSit As Integer

NNSit = Sheets("page 1").Range("E29").Value
On Error GoTo Fin
Sheets("page 1").Range("E29").Value = NNSit + 1
ThisWorkbook.SaveAs Filename:="Situation " & NNSit + 1 & ".xls"
Exit Sub
Sheets("page 1").Range("E30").Activate
MsgBox ("La nouvelle page à été créée avec succès.Veuillez renseigner la date")
Fin:
Sheets("page 1").Range("E29").Value = NNSit 'là par contre je voudrais reinitialiser le changment de situation si jamais l'enregistrement est annulé mais bon c'est pas primordial.
End Sub


Ce qui me premet de préserver les formats de mes cellules.
Quant à l'enregistrement, il se passe bien depuis que j'ai intégré un exit sub
 
Dernière édition:

mawua

XLDnaute Occasionnel
Re : Sommer deux plages sur deux classeurs.

Bonjour le forum,
Bonjour ERIC S,

Que me conseillerais-tu pour ce qui est de la protection du classeur. Je compte le verrouiller et ne rendre modifiable que quelques cellules. Mais j'ai l'impression que ce n'est pas de cela que tu parlais.
 

ERIC S

XLDnaute Barbatruc
Re : Sommer deux plages sur deux classeurs.

re

Bien sûr il est préférable de ne laisser l'accès qu'aux cellules "utilisateurs".

Jusqu'à présent je n'ai jamais pour mes applications considéré l'acte de malveillance mais plus l'erreur de manip, donc j'utilise le plus fréquemment des protections sans mot de passe.

Par contre, effectivement je parlais du classeur que tu archives. Pour ma part, je les protège entièrement car ils ne doivent pas être modifiés (traçabilité). Quelquefois je vais jusqu'à remplacer les formules par leurs valeurs en dur.

C'est mon principe, il en vaut un autre et il me semble assez logique
 

Discussions similaires

Réponses
12
Affichages
450
Réponses
6
Affichages
190

Statistiques des forums

Discussions
312 824
Messages
2 092 494
Membres
105 432
dernier inscrit
ramzi.ben-moussa