syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003
-
26 nov. 2003 à 10:29
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 2019
-
2 déc. 2003 à 22:16
Salut
Une aide serait profitable
J'ai une boite de dialogue, avec 20 cases à cocher qui correspondent aux réponses à 10 questions.2 réponses possible par questions
Sur une première feuille, j'ai la base de données de tous ceux qui ont répondus aux questions.Dans la colonne A j'ai les noms, et les colonnes de b à ..., j'ai les réponses données, sous la forme d'une cellule coché ou non
Sur une deuxième feuille, j'ai placé 20 numéros qui correspondent aux réponses, à coté il ya le nombre de fois que la réponse à été cochées.
Comment peut on faire pour classer les 20 réponses de la plus répondue à la moins répondue, à chaque fois que je rajoute une ligne de données nouvelle.
Merci pour l'aide apportée
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 26 nov. 2003 à 22:30
dans la colonne A:A de ta feuille réponse tu mets les 20 codes et dans la colonne B:B tu mets à jour le nombre de réponses à chaque fois qu'une ligne est rajoutée.
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 27 nov. 2003 à 11:44
Merci pour ton aide mais pour l'instant ça ne fonctionne pas, il me dit erreur défini par l'application ou par l'objet
ET j'avoue que je ne sais pas ce que ça veut dire.
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 28 nov. 2003 à 20:04
Salut et merci
9a fonctionne mais quand je fais le tri je ne peux plus voir quelle est la réponse le plus données car les numéros des réponses ne suivent pas
; comment faire?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Note que ce code est pondu par le créateur de macro vba Excel que je t'encourage à utiliser lorsque tu connais la manip sous excel mais pas l'équivalent en vba.
Pour cela faire:
Outils/macro/Nouvelle Macro... [OK]
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 1 déc. 2003 à 11:22
merci pour ton aide, cela fonctionne.
j'aurais un autre problème mais je ne voudrais pas t'ennuyer
Voilà: toujours avec ces réponses aux questions, je voudrais savoir quelle est la série de réponse la plus fréquente, je m'explique:Sur une base de données qui regroupe environ 500 personnes questionnées, quell est le nombre de personnes qui ont répondues identiquement à 5 questions, 6, et plus.
Merci encore
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 1 déc. 2003 à 13:55
Comme tu l'as dit toi même tu travailles sur une "base de données". Or excel n'est pas vraiment vraiment conçu pour gérer des bases de données.
Des fonctions plus adaptées auraient pu être employées sous Access je pense.
Bref. pour ce type de question il n'y a rien d'impossible, mais le temps de réponse n'est pas optimisé.
Je pense que pour résoudre ton pb, tu dois repartir du résultat précédemment obtenu.
Supposons: "je cherche les personnes ayant répondu au moins à 5 questions de façon identique"
Tu prends la série des cinq réponses les plus fréquentes, et personne par personne, tu verifies si oui ou non elles ont donné ces 5 reponses. Si oui, compteur=compteur+1.
A la fin de la vérification, compteur = nbre de personne ayant répondu au moins identiquement à 5 questions.
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 1 déc. 2003 à 14:44
J'ai compris mais le problème est que je ne connais pas la séris des réponse les plus données et je voudrais savoir style:55 personnes ont répondues identiquement aux question:1-3-5-7-9
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 1 déc. 2003 à 14:54
Excuse, j'ai le classement des réponses les plus données, mais cela ne me dit pas que c'est la série de réponse la plus fréquemment donnée, il y en a peut-être d'autre; une série de 2,3,4,5 ou 6 réponses.comment savoir?
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 1 déc. 2003 à 18:46
Le pc peux exécuter quelques millions d'opérations à la seconde, dons si on prends une série de 5 réponses données, ça nous donne 500*499*498*497*496*495=1.51 dix puissance 16; quelque minutes si le code est bien écrit
syltab
Messages postés18Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 décembre 2003 2 déc. 2003 à 13:12
j'ai réfléd=chi et ta solution est pas simal du tout
pourrais tu m 'indiquer le genre de code qu'il faut écrire, par rapport a ta réponse du 1/12 à 13 h 55
merci
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 2 déc. 2003 à 22:16
Sub Macro1()
'dimension des variables temporaires
Dim m As Integer
Dim m1 As Double
Dim m2 As Integer
'dimension du compteur final
Dim compteur As Integer
'test reponse formulaire dont les réponses sont
'statistiquement intéressantes oui/non
Dim rep As Boolean
'Nombre de réponses attendues
Dim nbrrep As Integer
nbrrep = 5
'Dimension d'un tablo permettant d'interpreter
'les resultat de la feuille2(résultat) dans la feuille1(données)
ReDim tablo(1 To 3, 1 To nbrrep) As String
'Nom des feuilles
Dim feuille1 As String
Dim feuille2 As String
feuille1 = "données"
feuille2 = "résultats"
'Allons voir les résultats...
Sheets(feuille2).Select
'regardons les n premiers resultats les plus repondus (nbrrep)
'et stockons le nom de la question équivalente (contenue dans la colonne A:A)
For m = 1 To nbrrep
tablo(1, m) = Cells(m, 1) 'colonne A:A
tablo(2, m) = Cells(m, 2) 'colonne B:B
Next
'allons voir les données...
Sheets(feuille1).Select
'parcourons l'entete du tableau "données" et recherchons la correspondance
'nom de la question posée = numéro de colonne
'l'entete est compris entre B:1 et U:1
For m = 1 To nbrrep
For m2 = 1 To 20
If tablo(1, m) = Cells(1, m2 + 1) Then
tablo(3, m) = m2 + 1 'enregistrement du num colonne corresp.
Exit For
End If
Next m2
Next m
'nous connaissons les colonnes à vérifier (il y en a n=nbrrep)
'compteur a zero
compteur = 0
'parcourons les 65536 lignes de la feuille excel
'a moins que dans la colonne A:A on rencontre une cellule vide
'dans ce cas on finira le processus
For m1 = 2 To 65536
If IsNull(Cells(m1, 1)) Or Cells(m1, 1) = "" Then
Exit For
End If
'a priori la ligne est bonne , à moins qu'une des
'reponses données ne soit pas intéressante à retenir
rep = True
For m = 1 To nbrrep
'je recherche si la reponse est égale à "X" ... à remplacer par ce qu'on veut ;-)
If Cells(m1, Val(tablo(3, m))) <> "X" Then
'une des reponses n'est pas interessante
'nous ne la comptabiliserons pas
rep = False
End If
Next
If rep = True Then
'le minimum de reponses acceptables a été donné, je comptabilise +1
compteur = compteur + 1
End If
Next
'j'affiche le bilan
MsgBox compteur