Centraliser les données de plusieurs feuille dans une seule

Bonjour à vous,

Nouveau sur le forum, je viens vous demander de l'aide. Je n'ai pas trouver de solutions sur les différents forums.

Comment centraliser dans le même classeur sur une feuille appelée "Mens" les informations saisie sur une feuille journalière créée à partir d'un programme vba, et cela sur un mois, c'est à dire entre 29 et 31 saisies. J'ai réussi pour la première saisie mais ensuite bonjour la galère. J'ai mis des annotations dans les lignes de programme là où je pêche.

Je vous joins le fichier, plus parlant, et je me tiens à votre entière disposition pour la moindre question que vous auriez.

Merci pour votre participation.

Bonne journée.

Thierry

64blanch2.xlsm (231.19 Ko)

Bonjour Thierry.

J'ai ouvert ton fichier…. ben sans avoir tous les éléments pas facile.

Que veux tu faire?

Veux tu ajouter une feuille chaque jour et avoir un récapitulatif mensuel ou à chaque fois que tu ajoute une feuille cumuler les valeurs au solde cellule par cellule?

Explique un peu plus ce que tu veux?

Utilise des commentaires dans les cellules ce sera plus simple.

Cordialement

Soleusterm

Merci Soleusterm,

Il est vrai que j'ai été plus que succinct dans mes explications.

Dans le nouveau fichier joint j'ai approfondi ce que je recherche dans la feuille Mens.

J'espère cette fois ci avoir été plus clair.

Bonne fin de soirée

35blanch2.xlsm (237.03 Ko)

Plus clair oui.

Bon il y a plusieurs options.

la première est une macro

Sub Calc_somm_meme_cell_Clas()
 ' Macro fonctionnelle sous Microsoft Office 2016 creee pour votre usage
 ' Calcule la somme de toutes les cellules de meme adresse sur les onglets du Classeur

Application.ScreenUpdating = False
 On Error GoTo GestionErreur
Dim Somme As Double
Dim maPage As String
    maPage = Application.InputBox(Prompt:="Feuille de saisie", Title:="Modele", Default:="mens", Type:=2)
Dim maCell As String
    maCell = Application.InputBox(Prompt:="Cellule ? additionner", Title:="Cible", Default:="D2", Type:=2)
Dim maCibl As String
    maCibl = Application.InputBox(Prompt:="Cellule ? incr?menter", Title:="R?sultat", Default:="D2", Type:=2)
  For Each Feuille In Worksheets
      Somme = Somme + Feuille.Range(maCell)

  Next
  Valeur_CA = Somme
MsgBox ("La somme des cellules " & maCell & " est de " & Somme & " le r?sultat sera ?crit en" & maCibl & " sur la feuille " & maPage)

 Sheets(maPage).Select
 Range(maCibl).Select

   Selection.Value = Somme
GestionErreur:
Exit Sub
 End Sub

Elle est facile, tu la copie dans un module du classeur et comme elle est générique il te suffit de la lancer en choisissant quelle cellule a sommer et ou placer le résultat.

Attention, il ne faut pas de valeurs parasites dans des feuilles qui seraient comptabilisées par erreur, la aussi il y a une solution simple.

Déplacer les valeurs ces feuilles à ne pas comptabiliser sur un autre champ par exemple commencer à la ligne 200 et masquer les précédentes.

Si elle te convient sur le principe on peut l'adapter.

Mais je ne pourrais pas le faire ce soir ( soucis de santé, je dois me reposer).

Cordialement.

Bonjour Soleusterm,

J'ai essayé le programme, mais rien ne se passe.

J'ai rajouté des infos dans le programme que je te joins.

Merci

Bonne journée .

Thierry

16blanch2.xlsm (250.19 Ko)

Bonjour Thierry.

Excuses moi, je ne t'ai pas répondu de suite interpellé par un message privé… auquel je me devais de répondre.

Si je résumes bien:

Ce que tu veux c'est dès l'ajout d'une nouvelle feuille, injecter les données de cette feuille dans ton onglet "mens" récapitulatif?

Pour ce faire, je pense qu'il faut une macro qui active cet onglet et comme il est nouveau, il faudra lui indiquer son nom dans une boite de dialogue.

Ensuite, elle le sélectionne et copie automatiquement les valeurs dans les cases correspondantes.

Malheureusement, je n'ai pas la possibilité de te la créer aujourd'hui.

Je regardes ce week-end.

Cordialement.

Merci,

Et bonne fin de journée

Thierry

Thierry,

J'ai fait une macro qui pourrait correspondre il y a quelque temps.

La voici, inspires t'en, je crois qu'elle répond à tes attentes.

Sub Collecte()

Application.ScreenUpdating = False

Dim maFeuil, Chem, Chau, Pant, Dest  As String ' d?claration des valeurs.

' i?i, indication de la feuille ? s?lectionner
    maFeuil = Application.InputBox(Prompt:="Onglets ? s?lectionner", Title:="Noms s?par?s par une virgule", Default:="Feuil1", Type:=2)
Worksheets(maFeuil).Activate

 ' I?i, r?cup?ration des valeurs. A reproduire autant de fois qu'il y a de valeurs ? trouver
Cells.Find(What:="Chemises", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
Chem = ActiveCell.Value

Cells.Find(What:="Chaussures", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
Chau = ActiveCell.Value

Cells.Find(What:="Pantalons", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
Pant = ActiveCell.Value

' I?i s?lection de la feuille de compilation.
Dest = (maFeuil)
Worksheets("Mens").Activate
Range("A11").Select
' code pour ins?rer une ligne avec les nouvelles donn?es.
      Selection.EntireRow.Insert Shift:=xlDown
'option si tu d?sires compiler les lignes les unes sous les autres. sinon supprime ou apostrophe cette ligne et desapostrophe les trois ci-dessous

'Selection.End(xlDown).Select
'Selection.End(xlUp).Select
'ActiveCell.Offset(1, 0).Select

'Copie des donn?es dans les cellules correspondantes.
ActiveCell.Value = maFeuil ' ce code inscrit le nom de ta nouvelle feuille dans ton onglet Mens
  Selection.NumberFormat = "dd-mm-yy"
ActiveCell.Offset(0, 2).Select ' ce code d?place la cellule de saisie de deux vers la droite
 ActiveCell.Value = Chem  ' ce code copie la valeur

ActiveCell.Offset(0, 2).Select ' ce code d?place la cellule de saisie de deux vers la droite
 ActiveCell.Value = Chau ' ce code copie la valeur

ActiveCell.Offset(0, 2).Select ' ce code d?place la cellule de saisie de deux vers la droite
 ActiveCell.Value = Pant ' ce code copie la valeur

Application.ScreenUpdating = True
MsgBox ("Fini!")
End Sub

Bon, il faudra modifier quelques éléments.

Mais ou je suis je ne peux récupérer ton classeur.

Cordialement.

Le hic c'est que je ne maîtrise pas assez VBA pour me servir de ton programme.

Pas de soucis.

Dans la vie, il y a:

Ceux qui savent ( un peu)... leur rôle est d'aider les autres,

Ceux qui ne savent pas (certaines choses) mais on peut les leur apprendre.

Et ceux qui croient savoir.... mais ceux-là, laissons les ou ils sont.

Je t'ai envoyé cette macro pour exemple.

Donc, je vais, mais pas ce week- End essayer de t'écrire celle qui va bien.

si un autre participant peut intervenir et la modifier, je ne suis pas contre.

La je n'aurrais pas la possibilité de le faire avant au moins mercredi.

Cordialement

Bon ben, tu as de la chance… enfin en partie;

Grace à une macro d'enfer… j'ai fini mon travail et du coup… j'ai travaillé pour toi.

Lorsque j'ouvre ton fichier il affiche des erreurs sur les formules… donc je les ai supprimées mais tu pourras les recopier d'une version à ta disposition dans celui que je t'envoie.

Ou renvoie m'en un avec autre chose que =#REF! dans toutes les cellules.

Et celui-ci, il a les macros qui vont bien.

Petit Conseil.

Enregistre le tel quel dans un répertoire de sauvegarde et travaille toujours sur la copie.

Cordialement

Merci Soleuterm,

Merci pour ton aide j'ai réussi à finaliser le programme.

Encore un grand merci

Bon, c'est une très bonne nouvelle.

J'ai réfléchi après, on peut ne faire qu'une macro.

Si tu préfères dis-le.

Cordialement.

Rechercher des sujets similaires à "centraliser donnees feuille seule"