Inscrire valeur de plusieurs fichier Excel fermé

Jeremy992

XLDnaute Occasionnel
Bonjour à tous les passionné qui me liront :)

Ce que j’essaie de faire me parait impossible… Mais je crois aux compétences sans limite des passionnés d’Excel présent ici.

Je vais essayer d’être simple et précis dans mes explications, pour éviter au maximum à ceux qui s’intéresseront à mon problème, de perdre du temps inutilement.


1.Des fichiers d’enquêtes de satisfaction

Plusieurs fichier : « 1 satisfaction.xlsx », « 2 satisfaction.xlsx », « 3 satisfaction.xlsx »…
Dans le répertoire : « C:\Users\tly\Desktop\ESSAI ENQUETE SATIF\Enquetes »

Particularités : Le nombre de fichier « satisfaction » contenu dans ce répertoire peut augmenter (4 satisfaction, 5 satisfaction, etc…).

2.Un fichier de synthèse d’enquêtes de satisfaction

Un fichier : « Jeremy992 synthèse.xlsm », qui sert à faire une synthèse de tous les fichiers « satisfaction »
Dans le répertoire : « C:\Users\tly\Desktop\ESSAI ENQUETE SATIF »

3.Fonctionnement souhaité :

Dans le fichier de synthèse « Jeremy992 synthèse» j’aimerais récupérer les données contenu dans les fichiers « X satisfaction».

Par exemple :
Dans le fichier « Jeremy992 synthèse », à C10:C14 mettre la somme des X contenu dans les fichiers « satisfaction » à C4:C8

A E10:E14 la somme des X contenu dans les fichiers « satisfaction » à D4:D8

A C40 :C44 la somme des X contenu dans les fichiers « satisfaction » à C24:C28

Idem pour le reste !

REMARQUE IMPORTANTE : Les fichiers « satisfaction » doivent rester fermé ! Ce qui implique donc de venir chercher les données sans les ouvrirent !

NOTA : La structure des documents est figé, elle ne bougera donc pas.

Voilà, j’espère être assez simple et précis dans ma formulation.
Je mets bien sur les fichiers exemple en PJ.

Je sais que ce que je demande est compliqué et vous demandera surement beaucoup de temps, c’est pourquoi je vous remercie par avance pour le temps que vous m’accorderais.

Jeremy992
 

Pièces jointes

  • 1 satisfaction.xlsx
    11.2 KB · Affichages: 26
  • 2 satisfaction.xlsx
    11.5 KB · Affichages: 26
  • Jeremy992 synhtèse.xlsm
    20.7 KB · Affichages: 26

Jeremy992

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

Bonjour Job75,

Merci de ta réponse.
Malheureusement je ne comprends pas très bien :/
Comment ça des formules de liaison?
Les données ce mettrons à jours lors de l'ajout d'un nouveau fichier "satisfaction"?

Le but de ma démarche est de ne "piloter" que le fichier "Synthèse" et que les données ce mettent à jours automatiquement en récupérant les valeurs dans les cellules des autres fichiers.

Aurais-tu un exemple à me donner?
 

Tibo62

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

Bonjour jeremy 992, job75

Voici un exemple sur ton fichier adapte le à ton besoin je t'ai mis un exemple en C10.

Cordialement
Thibaut
 

Pièces jointes

  • 341032d1438593009-inscrire-valeur-de-plusieurs-fichier-excel-ferme-jeremy992-synhtese.xlsm
    23.1 KB · Affichages: 21

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re, salut Tibo62,

Comment ça des formules de liaison?

C'est pourtant bien simple, il suffit (au début) d'ouvrir tous les classeurs et en écrivant les formules de cliquer sur les cellules concernées pour entrer les références.

Les données ce mettrons à jours lors de l'ajout d'un nouveau fichier "satisfaction"?

Bien sur que non, il faudra alors modifier les formules en ajoutant les nouvelles cellules.

A+
 

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re,

Bon, voyez le fichier joint et cette macro qui se lance en cliquant sur le bouton :

Code:
Sub MAJ()
Dim chemin$, fich, N&, liste(), c As Range, P As Range, i&, ad, j&
'---liste des fichiers + feuille---
chemin = ThisWorkbook.Path & "\Enquetes\"
fich = Dir(chemin & "*satisfaction.xls*")
While fich <> ""
  N = N + 1
  ReDim Preserve liste(1 To N)
  liste(N) = "'" & chemin & "[" & fich & "]Feuil1'!"
  fich = Dir
Wend
[C2] = N
'---remplissage des cellules---
For Each c In Cells.SpecialCells(xlCellTypeComments)
  Set P = Range(c.Comment.Text)
  For i = 1 To P.Count
    c(i) = "" 'RAZ
    ad = Application.ConvertFormula(P(i).Address, xlA1, xlR1C1)
    For j = 1 To N
      If ExecuteExcel4Macro(liste(j) & ad) <> 0 Then c(i) = c(i) + 1
    Next j
  Next i
Next c
End Sub
Notez bien les commentaires avec les adresses des plages, il ne faut pas d'autres commentaires...

Et mettez bien les fichiers "satisfaction" dans le répertoire "Enquetes" (pas d'accent).

A+
 

Pièces jointes

  • Jeremy992 synhtèse(1).xlsm
    26.1 KB · Affichages: 21
Dernière édition:

Jeremy992

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

Tibo62,
J'ai adapté ton fichier, cela fonctionne mais j'ai du mal a mettre à jour les données... :/

job75,
Ton fichier est juste phénoménal !! C'est exactement ce que je chercher à faire !!! C'est tout simplement impressionnant !

Merci a vous deux en tout cas !! C'est génial, je sais pas comment j'aurais fait sans vous !

Encore mille fois merci !!

Au plaisir de vous relire prochainement :)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re,

Voici une solution plus complète.

Le nombre de questionnaires soumis (en C1) est le nombre de fichiers "satisfaction".

Le nombre de questionnaires remplis (en C2) est le nombre de fichiers avec au moins une cellule cochée "X".

La nouvelle macro dans ce fichier (2) :

Code:
Sub MAJ()
Dim chemin$, fich, N&, liste(), c As Range, P As Range, i&, ad, j&
'---liste des fichiers + feuille---
chemin = ThisWorkbook.Path & "\Enquetes\"
fich = Dir(chemin & "*satisfaction.xls*")
While fich <> ""
  N = N + 1
  ReDim Preserve liste(1 To 2, 1 To N)
  liste(1, N) = "'" & chemin & "[" & fich & "]Feuil1'!"
  fich = Dir
Wend
'---remplissage des cellules---
Application.ScreenUpdating = False
For Each c In Cells.SpecialCells(xlCellTypeComments)
  Set P = Range(c.Comment.Text)
  For i = 1 To P.Count
    c(i) = "" 'RAZ
    ad = Application.ConvertFormula(P(i).Address, xlA1, xlR1C1)
    For j = 1 To N
      If ExecuteExcel4Macro(liste(1, j) & ad) <> 0 Then
        c(i) = c(i) + 1
        liste(2, j) = 1 'pour compter les fichiers "remplis"
      End If
    Next j
  Next i
Next c
[C1] = N 'nombre se questionnaires soumis
[C2] = Application.Sum(liste) 'nombre de questionnaires remplis
End Sub
Notez que le tableau liste comporte maintenant 2 dimensions.

A+
 

Pièces jointes

  • Jeremy992 synhtèse(2).xlsm
    27 KB · Affichages: 16

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re,

Fichier (3) avec une petite vérification (formule + MFC) en colonne K.

Bonne soirée.
 

Pièces jointes

  • Jeremy992 synhtèse(3).xlsm
    27.6 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re,

Mieux : les questionnaires anormalement remplis sont listés à partir de la colonne K :

Code:
Sub MAJ()
Dim chemin$, fich, N&, liste(), c As Range, P As Range, i&, ad1$, ad2$, j&
'---liste des fichiers + feuille---
chemin = ThisWorkbook.Path & "\Enquetes\"
fich = Dir(chemin & "*satisfaction.xls*")
While fich <> ""
  N = N + 1
  ReDim Preserve liste(1 To 3, 1 To N)
  liste(1, N) = "'" & chemin & "[" & fich & "]Feuil1'!"
  liste(2, N) = fich
  fich = Dir
Wend
'---remplissage des cellules---
Application.ScreenUpdating = False
Columns("K").Resize(, Columns.Count - 10).Delete 'RAZ
For Each c In Cells.SpecialCells(xlCellTypeComments)
  Set P = Range(c.Comment.Text)
  For i = 1 To P.Count
    c(i) = "" 'RAZ
    ad1 = Application.ConvertFormula(P(i).Address, xlA1, xlR1C1)
    ad2 = Application.ConvertFormula(P(i).Resize(, 4).Address, xlA1, xlR1C1)
    For j = 1 To N
      If ExecuteExcel4Macro(liste(1, j) & ad1) <> 0 Then
        c(i) = c(i) + 1
        liste(3, j) = 1 'pour compter les fichiers "remplis"
      End If
      '---questionnaires anormalement remplis---
      If c.Column = 3 Then _
        If ExecuteExcel4Macro("COUNTA(" & liste(1, j) & ad2 & ")") <> 1 _
          Then Cells(c(i).Row, Columns.Count).End(xlToLeft)(1, 2) = liste(2, j)
Next j, i, c
[C1] = N 'nombre se questionnaires soumis
[C2] = Application.Sum(liste) 'nombre de questionnaires remplis
Columns("K").Resize(, Columns.Count - 10).AutoFit 'ajustement largeur
End Sub
Le tableau liste comporte 3 lignes et N colonnes.

Fichier (4).

Bonne nuit.
 

Pièces jointes

  • Jeremy992 synhtèse(4).xlsm
    28.1 KB · Affichages: 14

job75

XLDnaute Barbatruc
Re : Inscrire valeur de plusieurs fichier Excel fermé

Re,

Les macros précédentes fonctionnent si les questionnaires sont cochés avec n'importe quel caractère.

Sauf le zéro...

Pour fonctionner même avec le zéro ce fichier (5) utilise COUNTA (NBVAL) sur la cellule :

Code:
Sub MAJ()
Dim chemin$, fich, N&, liste(), c As Range, P As Range, i&, ad1$, ad2$, j&
'---liste des fichiers + feuille---
chemin = ThisWorkbook.Path & "\Enquetes\"
fich = Dir(chemin & "*satisfaction.xls*")
While fich <> ""
  N = N + 1
  ReDim Preserve liste(1 To 3, 1 To N)
  liste(1, N) = "'" & chemin & "[" & fich & "]Feuil1'!"
  liste(2, N) = fich
  fich = Dir
Wend
'---remplissage des cellules---
Application.ScreenUpdating = False
Columns("K").Resize(, Columns.Count - 10).Delete 'RAZ
For Each c In Cells.SpecialCells(xlCellTypeComments)
  Set P = Range(c.Comment.Text)
  For i = 1 To P.Count
    c(i) = "" 'RAZ
    ad1 = Application.ConvertFormula(P(i).Address, xlA1, xlR1C1)
    ad2 = Application.ConvertFormula(P(i).Resize(, 4).Address, xlA1, xlR1C1)
    For j = 1 To N
      If ExecuteExcel4Macro("COUNTA(" & liste(1, j) & ad1 & ")") Then
        c(i) = c(i) + 1
        liste(3, j) = 1 'pour compter les fichiers "remplis"
      End If
      '---questionnaires anormalement remplis---
      If c.Column = 3 Then _
        If ExecuteExcel4Macro("COUNTA(" & liste(1, j) & ad2 & ")") <> 1 _
          Then Cells(c(i).Row, Columns.Count).End(xlToLeft)(1, 2) = liste(2, j)
Next j, i, c
[C1] = N 'nombre se questionnaires soumis
[C2] = Application.Sum(liste) 'nombre de questionnaires remplis
Columns("K").Resize(, Columns.Count - 10).AutoFit 'ajustement largeur
End Sub
Rebonne nuit.
 

Pièces jointes

  • Jeremy992 synhtèse(5).xlsm
    28.1 KB · Affichages: 17

Jeremy992

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

Bonjour job75,
Comment vas-tu?

Ton travail est juste impressionnant !! Je suis ébahie...

Petit question tout de même, si je veux rajouter des lignes, par exemple une question, qu'est-ce que je dois changer dans la programmation VBA?

Car cela me met une erreur d'incompatibilité de type à la ligne "c(i) = c(i) + 1"

J'en demande peut-être beaucoup... je suis désolé ^^
 

Jeremy992

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

job75,

Oups, ne pas tenir compte de mon message précédent, c'est moi qui ai fait un erreur en rajoutant des lignes :)
Tout fonctionne parfaitement, si je reste bien rigoureux quand j'ajoute des lignes :)
 

Jeremy992

XLDnaute Occasionnel
Re : Inscrire valeur de plusieurs fichier Excel fermé

job75,

Oui je m'en suis rendu compte :)
Ton fichier est super, ultra stable, il fonctionne parfaitement !

Si un jour tu passe à Nantes, je te paye un verre, ce sera la moindre des choses ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 608
Messages
2 090 189
Membres
104 446
dernier inscrit
Phil A