Dépouillement automatique de questionnaires Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
D
Deniriam
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 14 mai 2019
Version d'Excel : standard 2013

Message par Deniriam » 14 mai 2019, 14:15

Bonjour à tous,

Je dois envoyer un questionnaire à une centaines de personnes pour un sondage. Le questionnaire est constitué en grande partie de questions ouvertes, il y a aussi quelques questions où il faut donner une note allant de 1 à 10.
Je souhaite que sur une feuille Excel soient stockées les réponses de toutes les personnes, et classées par question, d'abord toutes les réponses à la question 1, puis toutes les réponses à la question 2...

Il y aura donc une centaine de fichiers Excels (questionnaires remplis par les utilisateurs) à traiter pour aboutir à un seul fichier final qui regroupe pour chaque question l'ensemble des réponses.
Pourriez vous me montrer comment faire ?

Je joint un fichier, un exemple très simplifié d'un questionnaire rempli par un utilisateur.

Merci d'avance :)
T_Exemple_questionnaire.xlsx
(9.82 Kio) Téléchargé 8 fois
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'099
Appréciations reçues : 334
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 14 mai 2019, 15:21

Bonjour et :bv3: sur le forum,

tu as de la chance j'ai traité un sujet un peu similaire il n'y a pas longtemps :wink:
Je te propose ce code:
Sub syntheseFichiers()
Application.ScreenUpdating = False
Dim chemin As String, fichier As String
Dim tableau As Variant
ReDim tableau(1 To 7, 0 To 0)

chemin = "mettre le chemin du dossier où se trouvent les fichiers à traiter avec \ à la fin"

fichier = Dir(chemin)
While fichier <> ""
    If fichier Like "xls*" Then
        ReDim Preserve tableau(1 To 7, 1 To UBound(tableau, 2) + 1)
        Workbooks.Open (chemin & fichier)
        For i = 2 To 14 Step 2
            tableau(i / 2, UBound(tableau, 2)) = Range("a" & i)
        Next i
        
	ActiveWorkbook.Close
    End If
Wend

Feuil1.Range("a2").Resize(UBound(tableau, 2), UBound(tableau, 1)) = WorksheetFunction.Transpose(tableau)
Application.ScreenUpdating = True
End Sub
Je n'ai malheureusement pas pu le tester comme je n'ai pas de dossier avec plein de fichiers pour mon test, il faudra bien penser à changer le nom du chemin pour mettre le chemin de ton dossier avec son nom :) Le code est à placer dans le fichier où tu veux faire ta synthèse.

Tu me diras si tu as des soucis ou non avec le programme, c'est possible qu'il y ait un bug ou deux à corriger.
1 membre du forum aime ce message.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
D
Deniriam
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 14 mai 2019
Version d'Excel : standard 2013

Message par Deniriam » 14 mai 2019, 16:48

Bonjour et merci beaucoup pour ton code :)
Je n'arrive pas encore à le faire fonctionner, j'ai mis le code dans ma feuille de résultats mais il y a une erreur 1004 au débogage.

Cette ligne est surlignée en jaune et je n'arrive pas à savoir pourquoi.
Feuil1.Range("a2").Resize(UBound(tableau, 2), UBound(tableau, 1)) = WorksheetFunction.Transpose(tableau)


Quand je met le nom du chemin où se trouvent mes fichiers dans cette ligne de code
chemin = "mettre le chemin du dossier où se trouvent les fichiers à traiter avec \ à la fin"
et que j'exécute, Excel se plante et ne répond pas donc je suis bloqué pour l'instant.
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'099
Appréciations reçues : 334
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 15 mai 2019, 08:22

Bonjour,

Je vais essayer de faire un test de ma macro chez moi pour la débuguer, je te tiens au courant :)

EDIT:

Je viens de tester le code et j'ai trouvé quelques erreurs que je viens de modifier, ce code fonctionne chez moi:
Sub syntheseFichiers()
Application.ScreenUpdating = False
Dim chemin As String, fichier As String
Dim tableau As Variant
ReDim tableau(1 To 7, 0 To 0)

chemin = "C:\Users\utilisateur\Desktop\test macro\"

fichier = Dir(chemin)
While fichier <> ""
    If fichier Like "*xls*" Then
        ReDim Preserve tableau(1 To 7, 1 To UBound(tableau, 2) + 1)
        Workbooks.Open (chemin & fichier)
        For i = 2 To 14 Step 2
            tableau(i / 2, UBound(tableau, 2)) = Range("a" & i)
        Next i
        
    ActiveWorkbook.Close
    End If
    
    fichier = Dir
Wend

Feuil1.Range("a2").Resize(UBound(tableau, 2), UBound(tableau, 1)) = WorksheetFunction.Transpose(tableau)
Application.ScreenUpdating = True
End Sub
J'avais mis le fichier à dépouiller dans un dossier "test macro" que j'avais placé sur mon bureau, le chemin marchait bien et a trouvé le fichier à traiter, ensuite ça a ajouté les infos au tableau puis les a retranscris dans le classeur où se trouvait le code sans souci. Fais juste bien attention à placer les fichiers dans un dossier et de bien écrire ton chemin, et ça devrait fonctionner :)
1 membre du forum aime ce message.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'565
Appréciations reçues : 257
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 15 mai 2019, 08:36

Bonjour, salut Ausecour,

Pour avoir réalisé déjà plusieurs questionnaires, je te conseille d'utiliser Google Forms. Tu créés ton questionnaire, et s'il est complété en ligne, les réponses s'ajoutent dans un unique tableur (1 ligne = 1 répondant, 1 colonne = 1 question).

Les questions ouvertes c'est bien, mais attention car en terme de traitement et d'analyse c'est plus long et complexe que des questions fermées. Pour faciliter la tâche, tu peux utiliser des macros pour identifier la présence de mots clés dans la réponse, mais cela ne se substitue pas à une relecture et un recodage question par question (ce qui est donc très chronophage si tu as beaucoup de questions ouvertes et beaucoup de répondants).
Personnellement, je te conseille donc de fermer au maximum les questions, en proposant plusieurs modalités de réponse et éventuellement d'ajouter une modalité "Autre" à compléter librement (ce qui limite le travail par la suite).

Edit : pour illustrer le discours, j'ai modifié ton fichier exemple vers quelques chose qui me semble nettement plus simple à traiter par la suite, tout en limitant la perte d'information / la limitation de l'expression
T_Exemple_questionnaire.xlsx
(10.56 Kio) Téléchargé 6 fois
1 membre du forum aime ce message.
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
D
Deniriam
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 14 mai 2019
Version d'Excel : standard 2013

Message par Deniriam » 15 mai 2019, 11:07

Bonjour ausecour je viens d'implémenter ton code, il fonctionne à la perfection et va me permettre un gros gain de temps :)
Un grand merci pour ton aide (10/10)
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'099
Appréciations reçues : 334
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 15 mai 2019, 11:28

De rien,

merci de porter ton intérêt sur le post de Pedro22, ce qu'il dit peut t'intéresser :bien:
1 membre du forum aime ce message.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
D
Deniriam
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 14 mai 2019
Version d'Excel : standard 2013

Message par Deniriam » 20 mai 2019, 10:39

Bonjour

J'ai tester le code avec plusieurs réponses aux questionnaires et il fonctionne très bien, mais il y a de temps en temps un problème qui revient lorsque les personnes écrivent des réponses de plus de 4 lignes dans une cellule. Dans ce cas le compilateur indique une erreur 13 "incompatibilité de type". J'ai fait des test et ce qui provoque l'erreur est simplement une réponse trop longue de plus de 4 lignes, en effaçant une partie de la réponse pour qu'elle soit plus courte ça supprime le message d'erreur. Comment je peux résoudre cette erreur svp ?
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'099
Appréciations reçues : 334
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 20 mai 2019, 12:03

Bonjour,

Visiblement c'est un problème de stockage du tableau mais il faudrait que je me penche dessus, je n'ai pas eu le temps de me pencher dessus pour le moment... Pedro a peut-être une idée d'où vient le problème :?
1 membre du forum aime ce message.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
D
Deniriam
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 14 mai 2019
Version d'Excel : standard 2013

Message par Deniriam » 23 mai 2019, 16:58

Bonjour,

Quelqu'un aurait il une solution ou une piste de recherche pour résoudre ce problème de stockage dont j'ai parlé plus haut? :?
J'ai tester le code avec plusieurs réponses aux questionnaires et il fonctionne très bien, mais il y a de temps en temps un problème qui revient lorsque les personnes écrivent des réponses de plus de 4 lignes dans une cellule. Dans ce cas le compilateur indique une erreur 13 "incompatibilité de type". J'ai fait des test et ce qui provoque l'erreur est simplement une réponse trop longue de plus de 4 lignes, en effaçant une partie de la réponse pour qu'elle soit plus courte ça supprime le message d'erreur. Comment je peux résoudre cette erreur svp ?
merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message