Help VBA

Résolu
vulcasquale Messages postés 1 Statut Membre -  
 Vulcasquale -
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

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. vulcasquale
       
      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
    2. Frenchie83 Messages postés 2254 Statut Membre 339
       
      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
    3. Vulcasquale
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Vulcasquale
       
      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