Etude d'une enquête et résultats en VBA

shenmicke

XLDnaute Junior
Bonjour le forum,

je viens une fois de plus pour trouver de l'aide. En effet j'ai une feuille excel avec 4 séries de questions, 3 groupes différents qui y répondent et une pondération pour chaque question.
Regarde la pièce jointe VBA Test Partie 3.xls
Je vais vous donner un exemple car c'est pas évident à expliquer.

Pour la case 17:4 pour le groupe A correspondant au questionnaire 1.
A la colonne 5 il y a le groupe A Question 1 et pondération 1.
Donc le Groupe A est concerné par la question 1 du Questionnaire 1.
Donc il faut faire un compteur qui fasse compteur = compteur + pondération de la question * 1.
Et continuer sur toute la ligne:

Pour non je pense qu'il faut faire une pondération * -1, pour NA on mettra 0.

J'aimerai faire ça pour les 3 groupes bien sûr.

J'ai fait pour le moment:

Sub Macro1()
Dim cmp As Integer
Dim tabA(1, 3, 4, 7, 10)
Dim tabB(2, 5)
Dim tabC(6, 8, 9)

Set Plage1 = Range("E4:N4")
Set Plage2 = Range("E6:N6")
Set Plage3 = Range("E8:N8")

For Each Item In Plage1
If Item.Value = "Na" Then Next Item
End If
If Item.Value = "Non" Then
cmp = cmp + (-1 * Offset(0, -1).Value)
Next Item
End If
If Item.Value = "Oui" Then
cmp = cmp + 1 * Offset(0, -1).Value
Next Item
End If


End Sub

Merci de m'aider :)
 

Odesta

XLDnaute Impliqué
Re : Etude d'une enquête et résultats en VBA

Bonjour,
Je ne réponds pas complètement à la demande, car je propose une solution par formule.

Si il vous faut absolument par macro, il me semble qu'il y a plus simple que la manipulation des offset (que personnellement je n'aime pas du tout)

Cdt

Olivier
 

Pièces jointes

  • shenmicke_par_formule.xls
    35.5 KB · Affichages: 70

shenmicke

XLDnaute Junior
Re : Etude d'une enquête et résultats en VBA

Bonjour,
J 'ai fait celà et j'ai une erreur au niveau du cmp = cmp + Cells(i, J).Value
Pour la ligne 13 :(


Sub Macro1()

Dim i As Integer
Dim J As Integer
Dim cmp As Integer

For i = 5 To 14
For J = 4 To 10 Step 2
cmp = cmp + Cells(i, J).Value
Next J
cmp = cmp * Cells(i, 3)
Cells(i, 13) = cmp
Next i

End Sub
 

Odesta

XLDnaute Impliqué
Re : Etude d'une enquête et résultats en VBA

Re

Comme ceci :
VB:
Sub resolution()

'param
col_num = 3
deb_quest = 5 'colonne de début
fin_quest = 14 'colonne de fin
ligne_pond = 3 'ligne pondération
colonne_resultat = 16 'résultat globale
ligne_groupe = 2 'groupe résultat
ligne_groupe_questionnaire = 2 'groupe questionnaire


'boucle
For i = 4 To 3000
'init
score = 0
    If Left(Cells(i, col_num).Value, Len("Questionnaire")) = "Questionnaire" Then
        'Globale
        For y = deb_quest To fin_quest
            If Cells(i, y) = "Oui" Then score = score + Cells(ligne_pond, y)
            If Cells(i, y) = "Non" Then score = score - Cells(ligne_pond, y)
        Next y
        Cells(i + 1, colonne_resultat).Value = score '+1 pour garder les formules, à supprimer plus tard !
        
        'Groupes
        For k = 1 To 3
        score = 0
            
            For y = deb_quest To fin_quest
                If (Cells(i, y) = "Oui") And (Right(Cells(ligne_groupe, colonne_resultat + k).Value, 1) = Cells(ligne_groupe_questionnaire, y).Value) Then score = score + Cells(ligne_pond, y)
                If (Cells(i, y) = "Non") And (Right(Cells(ligne_groupe, colonne_resultat + k).Value, 1) = Cells(ligne_groupe_questionnaire, y).Value) Then score = score - Cells(ligne_pond, y)
            Next y
            Cells(i + 1, colonne_resultat + k).Value = score '+1 pour garder les formules, à supprimer plus tard !
        Next k
        
        
    End If


Next i

End Sub
Cdt
 

Odesta

XLDnaute Impliqué
Re : Etude d'une enquête et résultats en VBA

Bonjour

Alors je te propose de lancer ton petit programme, et lorqu'il plante, de faire "debogage". la ligne en jaune est la ligne en erreur. en passant la souris sur i et J tu verra les valeurs qu'elles prennent. Pour la coordonné 6,6, on vois que c'est un "Oui". Il n'est donc pas possible d'additionner une valeur numérique à une valeur de stype String.

Cdt
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11