Help VBA

Résolu/Fermé
vulcasquale Messages postés 1 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 12 juin 2015 - 12 juin 2015 à 14:12
 Vulcasquale - 15 juin 2015 à 16:45
Bonjour,

Je réalise actuellement un questionnaire sur excel et je découvre le bonheur des macros. Petit problème, je ne connais rien au VBA...
Certes, c'est un peu ambitieux, mais je suis pleine de bonne volonté!
Alors mon premier problème...

J'ai créé une boite de dialogue pour une réponse qui se déclenche quand la personne répond : "autres". Et ça marchait !
Le problème est que j'ai 5 questions de ce type et que je n'arrive pas à reproduire le même fonctionnement indépendamment les uns des autres. Avec ma dernière formule, j'arrive a faire déclencher les boites de dialogue uniquement si la personne répond "Autres" dès la première question. Pouvez vous m'aider ?
Un grand merci par avance pour votre aide.

Voici ma dernière formule:
Private Sub Worksheet_calculate()
Dim result As String
If [H16] = "Autres" Then
result = InputBox("question 7 vous avez répondu Autres pouvez vous précisez")
If result <> "" Then
Range("I16").Select
ActiveCell = result
Else
If [H18] = "Autres" Then
result = InputBox("question 8 précisez Autres")
If result <> "" Then
Range("I18").Select
ActiveCell = result
Else
If [H20] = "Autres" Then
result = InputBox("question 9 précisez Autres")
If result <> "" Then
Range("I20").Select
ActiveCell = result
Else
If [H22] = "Autres" Then
result = InputBox("question 10 précisez Autres")
If result <> "" Then
Range("I22").Select
ActiveCell = result
Else
If [H24] = "Autres" Then
result = InputBox("question 11 précisez Autres")
If result <> "" Then
Range("I24").Select
ActiveCell = result
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
13 juin 2015 à 06:36
Bonjour
Private Sub Worksheet_calculate()
    Dim result As String
    If [H16] = "Autres" Then
        result = InputBox("question 7 vous avez répondu Autres pouvez vous précisez")
        If result <> "" Then [I16] = result
    End If
    If [H18] = "Autres" Then
        result = InputBox("question 8 vous avez répondu Autres pouvez vous précisez")
        If result <> "" Then [I18] = result
    End If
    If [H20] = "Autres" Then
        result = InputBox("question 9 vous avez répondu Autres pouvez vous précisez")
        If result <> "" Then [I20] = result
    End If
    If [H22] = "Autres" Then
        result = InputBox("question 10 vous avez répondu Autres pouvez vous précisez")
        If result <> "" Then [I22] = result
    End If
    If [H24] = "Autres" Then
        result = InputBox("question 11 vous avez répondu Autres pouvez vous précisez")
        If result <> "" Then [I24] = result
    End If
End Sub

Cdlt
0
vulcasquale
14 juin 2015 à 09:32
Merci pour votre réponse et votre disponibilité.
Malheureusement ça ne marche pas. Pour la première question c'est efficace mais après, pour les suivantes peut importe la réponse la boite de dialogue de la question initiale s'ouvre. Je n'arrive toujours pas à rendre indépendante les questions.
auriez-vous une autre proposition sous le coude??
Cordialement,
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
14 juin 2015 à 11:07
Bonjour
Rajouter ceci Option Compare Text en toute première ligne du module (avant toutes macros), ceci permet au programme de ne pas faire de distinction entre les minuscules et les majuscules.
Essayez
Cdlt
0
Vulcasquale
15 juin 2015 à 16:45
Bonjour,

Je tenais à vous remercier pour cette proposition. Malheureusement, elle n'a pas marché mais une autre personne a trouvé une autre forme pour exécuter cette requête. Merci pour votre temps et votre aide.
Cordialement,
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
Modifié par michel_m le 14/06/2015 à 14:17
Bonjour

une autre manière par une macro événementielle: la macro de déclenche lorsque'on valide une saisie dans les cellules H16 ,H18 etc
Option Explicit
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Num As Byte, Result

If Not Intersect(Target, Range("H16, H18, H20, H22, H24")) Is Nothing And Target.Count = 1 Then
If Target = "Autres" Then
Num = ((Target.Row - 16) / 2) + 7
Result = InputBox("question " & Num & " vous avez répondu Autres pouvez vous précisez")
If Result <> "" Then Target.Offset(1, 0) = Result
Else
Target.Offset(1, 0) = Target
End If
End If
End Sub


Pour installer
1: faire un "copier" de ce code
2: clic droit sur le nom de l'onglet (en bas et à droite de la feuille)
3: visualiser le code
4: coller

La maquette
https://www.cjoint.com/c/EFomqikhMG5

Michel
0
Vulcasquale
15 juin 2015 à 16:42
Bonjour,

Un grand merci pour votre aide. Cette dernière proposition marche !
c'est génial.
Merci pour votre disponibilité et votre pédagogie.
0