Dépouillement automatique de questionnaires

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

Bonjour et sur le forum,

tu as de la chance j'ai traité un sujet un peu similaire il n'y a pas longtemps

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.

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.

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

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

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

De rien,

merci de porter ton intérêt sur le post de Pedro22, ce qu'il dit peut t'intéresser

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 ?

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

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

Bonjour,

Est-ce que tu peux me transmettre les fichiers que tu as utilisé pour avoir le problème? ça se trouve je ne me dirige pas vers le bon problème...

Bonjour

Merci pour ta réponse Je t'envoie le fichier excel qui contient la macro ainsi que le questionnaire 1 qui fait planter le code, et un questionnaire 3 qui lui est bien traité par la macro.

75macroresultat.xlsm (18.68 Ko)

Up

Bonjour,

Désolé pour le temps de traitement de ta demande, j'ai finis par me pencher à fond sur ton problème, le souci vient apparemment de la fonction transpose... Du coup j'ai utilisé des boucles pour sortir le tableau sur ta feuille et ça marche comme il faut, je te transmets le fichier avec la macro modifiée:

74macroresultat.xlsm (18.99 Ko)

Bonjour,

Merci beaucoup de t' être penché sur le bug ! J'ai testé ton nouveau code qui fonctionne très bien avec les fichiers et ça va me simplifier le travail.

Rechercher des sujets similaires à "depouillement automatique questionnaires"