VBA- Pb: Boucle| MsgBox, InputBox pour récupérer des infos et stocker dans un tableau

pierreb

XLDnaute Nouveau
Bonjour à tous,

Avant de copier mon code, voila une description aussi simple que possible de mon problème :

Contexte :

Je cherche, à partir de MsgBox et InputBox, à récupérer la lettre des colonnes (dans une feuille Excel) où se situent les informations dont mon programme à besoin.

Après un MsgBox avertissant l'utilisateur de la démarche, s'il accepte (il coche OUI) un InputBox s'ouvre pour chaque donnée et lui demande la colonne concernée. S'il refuse, les données par défauts (déjà insérées) sont utilisées.

Problème :

Lorsque je lance le programme, la MsgBox d'explication et les InputBox s'affichent bien, mais lorsque toutes les colonnes ont été demandées, la MsgBox du départ s'affiche une nouvelle fois et le programme boucle..

Désolé le code est long... Merci beaucoup pour toute aide!

Code :

Code:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Fonction pour récupérer les lettres des colonnes

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function Colonne_configure() As Variant
'Choisir les colonnes de l'export qui vont contenir les informations importantes
'Pour que les données collectées soient les bonnes (par défaut si pas de configuration)

'Créer la matrice contenant les données
Dim Colonne(13, 2) As Variant

'Créer les valeurs par défauts et l'intitulé des cases
Colonne(0, 1) = "Nom du CA"
Colonne(0, 2) = "H"
Colonne(1, 1) = "Code de l'affaire"
Colonne(1, 2) = "A"
Colonne(2, 1) = "Code finalité"
Colonne(2, 2) = "L"
Colonne(3, 1) = "Affectation réalisée"
Colonne(3, 2) = "AG"
Colonne(4, 1) = "Début des travaux réalisé"
Colonne(4, 2) = "AK"
Colonne(5, 1) = "Mise en gaz réalisée"
Colonne(5, 2) = "W"
Colonne(6, 1) = "ARO réalisé"
Colonne(6, 2) = "U"
Colonne(7, 1) = "CREI réalisé"
Colonne(7, 2) = "Y"
Colonne(8, 1) = "Début des travaux prévu"
Colonne(8, 2) = "AJ"
Colonne(9, 1) = "Mise en Gaz prévue"
Colonne(9, 2) = "V"
Colonne(10, 1) = "ARO prévu"
Colonne(10, 2) = "T"
Colonne(11, 1) = "Temps alloué à l'étude"
Colonne(11, 2) = "O"
Colonne(12, 1) = "Temps alloué aux travaux"
Colonne(12, 2) = "P"
Colonne(13, 1) = "Temps alloué à la clôture"
Colonne(13, 2) = "Q"

'Afficher le message d'information : Voulez vous configurer + valeurs par défaut
depart = MsgBox("Vous pouvez choisir de configurer les colonnes de l'export ou garder les valeurs par défauts, indiquées ci-dessous :" & Chr(10) _
   & Chr(10) & "- " & Colonne(0, 1) & " (" & Colonne(0, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(1, 1) & " (" & Colonne(1, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(2, 1) & " (" & Colonne(2, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(3, 1) & " (" & Colonne(3, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(4, 1) & " (" & Colonne(4, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(5, 1) & " (" & Colonne(5, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(6, 1) & " (" & Colonne(6, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(7, 1) & " (" & Colonne(7, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(8, 1) & " (" & Colonne(8, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(9, 1) & " (" & Colonne(9, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(10, 1) & " (" & Colonne(10, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(11, 1) & " (" & Colonne(11, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(12, 1) & " (" & Colonne(12, 2) & " par défaut)" _
   & Chr(10) & "- " & Colonne(13, 1) & " (" & Colonne(13, 2) & " par défaut)" _
   & Chr(10) & "Si vous désirez garder les valeurs par défaut, cliquez sur NON, si vous souhaitez configurer les colonnes, notez la lettre des colonnes concernées sur la feuille Export et cliquez sur OUI", _
   vbYesNo + vbExclamation, "Attribution des colonnes")

'Poser les questions pour chaque colonne si l'utilisateur coche OUI
If depart = 6 Then

   For i = 0 To 13
   
      Colonne(i, 0) = InputBox(Colonne(i, 1), "Attribution des colonnes", Colonne(i, 2))

   Next i
   
'Laisser utiliser les valeurs par défaut si NON
ElseIf depart = 7 Then

   Colonne(1, 0) = "PAS BON"

End If

'Envoyer les données
Colonne_configure() = Colonne()

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Programme principal

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Calcul_charge_statique()
'Montage de tous les programmes

Dim Colonne() As Variant

'Régler les colonnes de l'export
Colonne() = Colonne_configure()

'.... La suite marche bien, donc pas très intéressante

End Sub

Pierre
 

Theze

XLDnaute Occasionnel
Re : VBA- Pb: Boucle| MsgBox, InputBox pour récupérer des infos et stocker dans un ta

Bonjour,

Il ne faut pas mettre les parenthèses pour le transfert des valeurs du tableau à la fonction :
Code:
Colonne_configure = Colonne()
Il faut indiquer que la fonction doit retourner un tableau en mettant des parenthèses après le typage de la fonction :
Code:
Function Colonne_configure() As Variant()
Teste :
Code:
Function Colonne_configure() As Variant()

    'Choisir les colonnes de l'export qui vont contenir les informations importantes
    'Pour que les données collectées soient les bonnes (par défaut si pas de configuration)
    
    'Créer la matrice contenant les données
    Dim Colonne(13, 2) As Variant
    Dim depart As String
    
    'Créer les valeurs par défauts et l'intitulé des cases
    Colonne(0, 1) = "Nom du CA"
    Colonne(0, 2) = "H"
    Colonne(1, 1) = "Code de l'affaire"
    Colonne(1, 2) = "A"
    Colonne(2, 1) = "Code finalité"
    Colonne(2, 2) = "L"
    Colonne(3, 1) = "Affectation réalisée"
    Colonne(3, 2) = "AG"
    Colonne(4, 1) = "Début des travaux réalisé"
    Colonne(4, 2) = "AK"
    Colonne(5, 1) = "Mise en gaz réalisée"
    Colonne(5, 2) = "W"
    Colonne(6, 1) = "ARO réalisé"
    Colonne(6, 2) = "U"
    Colonne(7, 1) = "CREI réalisé"
    Colonne(7, 2) = "Y"
    Colonne(8, 1) = "Début des travaux prévu"
    Colonne(8, 2) = "AJ"
    Colonne(9, 1) = "Mise en Gaz prévue"
    Colonne(9, 2) = "V"
    Colonne(10, 1) = "ARO prévu"
    Colonne(10, 2) = "T"
    Colonne(11, 1) = "Temps alloué à l'étude"
    Colonne(11, 2) = "O"
    Colonne(12, 1) = "Temps alloué aux travaux"
    Colonne(12, 2) = "P"
    Colonne(13, 1) = "Temps alloué à la clôture"
    Colonne(13, 2) = "Q"
    
    'Afficher le message d'information : Voulez vous configurer + valeurs par défaut
    depart = MsgBox("Vous pouvez choisir de configurer les colonnes de l'export ou garder les valeurs par défauts, indiquées ci-dessous :" & Chr(10) _
       & Chr(10) & "- " & Colonne(0, 1) & " (" & Colonne(0, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(1, 1) & " (" & Colonne(1, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(2, 1) & " (" & Colonne(2, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(3, 1) & " (" & Colonne(3, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(4, 1) & " (" & Colonne(4, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(5, 1) & " (" & Colonne(5, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(6, 1) & " (" & Colonne(6, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(7, 1) & " (" & Colonne(7, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(8, 1) & " (" & Colonne(8, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(9, 1) & " (" & Colonne(9, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(10, 1) & " (" & Colonne(10, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(11, 1) & " (" & Colonne(11, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(12, 1) & " (" & Colonne(12, 2) & " par défaut)" _
       & Chr(10) & "- " & Colonne(13, 1) & " (" & Colonne(13, 2) & " par défaut)" _
       & Chr(10) & "Si vous désirez garder les valeurs par défaut, cliquez sur NON, si vous souhaitez configurer les colonnes, notez la lettre des colonnes concernées sur la feuille Export et cliquez sur OUI", _
       vbYesNo + vbExclamation, "Attribution des colonnes")
    
    'Poser les questions pour chaque colonne si l'utilisateur coche OUI
    If depart = 6 Then
    
       For I = 0 To 13
       
          Colonne(I, 0) = InputBox(Colonne(I, 1), "Attribution des colonnes", Colonne(I, 2))
    
       Next I
       
    'Laisser utiliser les valeurs par défaut si NON
    ElseIf depart = 7 Then
    
       Colonne(1, 0) = "PAS BON"
    
    End If
    
    'Envoyer les données
    Colonne_configure = Colonne()

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Programme principal

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Calcul_charge_statique()

    'Montage de tous les programmes
    
    Dim Colonne() As Variant
    
    'Régler les colonnes de l'export
    Colonne() = Colonne_configure

    'Test dans la fenêtre d'exécution...
    For I = 0 To UBound(Colonne)
    
        Debug.Print Colonne(I, 0) & "-->" & Colonne(I, 1) & "-->" & Colonne(I, 2)
        
    Next I
'.... La suite marche bien, donc pas très intéressante

End Sub

Hervé.
 

pierreb

XLDnaute Nouveau
Re : VBA- Pb: Boucle| MsgBox, InputBox pour récupérer des infos et stocker dans un ta

Bonjour Hervé,

Tout d'abord merci de ta réponse, elle correspond exactement à ce que je voulais et tout marche bien.

Par contre, par curiosité, j'aimerai comprendre la fonction de :

Code:
'Test dans la fenêtre d'exécution...
 For I = 0 To UBound(Colonne)
   
    Debug.Print Colonne(I, 0) & "-->" & Colonne(I, 1) & "-->" & Colonne(I, 2)
       
 Next I

Bonne journée!
Pierre
 

Theze

XLDnaute Occasionnel
Re : VBA- Pb: Boucle| MsgBox, InputBox pour récupérer des infos et stocker dans un ta

Bonjour Pierre et tous le monde,

La petite boucle est juste là pour afficher les valeurs du tableau dans la fenêtre d'exécution (Ctrl+G) pour pouvoir contrôler si le résultat convient à se qu'on attend, elle est à supprimer.

Hervé.
 

Discussions similaires

Réponses
7
Affichages
337

Statistiques des forums

Discussions
312 156
Messages
2 085 819
Membres
102 991
dernier inscrit
justingr