IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Comment initialiser les parametres d'entrées d'une procédure en VBA?


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Comment initialiser les parametres d'entrées d'une procédure en VBA?
    Bonjour;

    J'ai crée une procédure contenant 3 parametres d'entrées "Sub QStat(Source As String, L As Integer, detect As Boolean)". La procédure marche trés bien.
    Je voudrais reinitialiser "L" à 4 (pour que l'affichage des données commence à partir de la 4 eme colonne ) .
    Actuellement la procédure commence l'affichage des données à partir la 2eme colonne.
    Vos suggestions seront les biens venues .
    Merci d'avance .
    ci joint ma procédure et la fonction qui appelle la procédure pour afficher la données de test, exemple d'affichage actuelle et d'affichage attendue


    NB : la fonction "Fonction_concatenee()" permet d'accéder aux fichiers de test, de les extraire et de les afficher sur excel en appelant la procédure QSTAT.
    Je vous joint aussi des fichiers de test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
     
    Sub QStat(ByVal Source As String, ByVal L As Long, ByRef Msg As String)
    Dim num1 As Integer
    Dim num2 As Integer
    Dim diff As Integer
    Dim intFic As Integer
    Dim strLigne As String
    Dim detect As Boolean
    Dim strCount As String
    Dim NomFichier As String
    Dim Position As Integer
    Dim i As Integer
    Dim Tableau() As String
     
    i = 3
    ' On passe à l'affichage
    'Entete
    ThisWorkbook.Sheets(1).Cells(1, 1) = "REFERENCE"
    ThisWorkbook.Sheets(1).Cells(1, 2) = "SERIAL NUM"
    ThisWorkbook.Sheets(1).Cells(1, 3) = "STEP TEST :"
     
    'affectation du repertoire
    'detect : Variable de controle de fichier
    detect = True
    intFic = FreeFile
     
    '--------Recupération nom fichier----------------------------
        Position = InStrRev(Source, "\")
            If Position = 0 Then
               NomFichier = Source
            Else
               NomFichier = Mid(Source, Position + 1)
               'Pour enlever l'extension, on cherche le dernier point
               Position = InStrRev(NomFichier, ".")
               'Si on le trouve, on ne garde que ce qui précède
               If Position <> 0 Then
                   NomFichier = Mid(NomFichier, 1, Position - 1)
               End If
           End If
    '--------Fin Recupération nom fichier-------------------------
    'ouverture du fichier
    Open Source For Input As intFic
    While Not EOF(intFic) And detect
        detect = False
        Line Input #intFic, strLigne
        If Left(strLigne, 3) = "EV|" Then
            'Controle sur le Event
            'Nbre |
            num1 = Len(strLigne)
            strCount = Replace(strLigne, "|", "")
            num2 = Len(strCount)
            diff = num1 - num2
            If diff = 35 Then
                detect = True
            Else
                Msg = Msg & vbNewLine & "Error in the " & NomFichier & " file, EV field contains " & diff & " | instead of 35"
                detect = False
                'Exit Sub
            End If
        End If
        If Left(strLigne, 3) = "ME|" Then
            'Controle sur la mesure
            'Nbre |
            num1 = Len(strLigne)
            strCount = Replace(strLigne, "|", "")
            num2 = Len(strCount)
            diff = num1 - num2
            If diff = 19 Then
                detect = True
            Else
                Msg = Msg & vbNewLine & "Error in the " & NomFichier & " file, ME field contains " & diff & " | instead of 19"
                detect = False
                'Exit Sub
            End If
        End If
        If Left(strLigne, 3) = "TD|" Then
            'Controle sur les limites
            'Nbre |
            num1 = Len(strLigne)
            strCount = Replace(strLigne, "|", "")
            num2 = Len(strCount)
            diff = num1 - num2
            If diff = 18 Then
                detect = True
            Else
                Msg = Msg & vbNewLine & "Error in the " & NomFichier & " file, TD contains " & diff & " | instead of 18"
                detect = False
                'Exit Sub
            End If
        End If
    Wend
    Close intFic
     
    If detect = True Then
        intFic = FreeFile
        'ouverture du fichier
        Open Source For Input As intFic
        While Not EOF(intFic)
            Line Input #intFic, strLigne
            If Left(strLigne, 3) = "ME|" Then
                'on incrémente la ligne d'ecriture
                i = i + 1
                'on decompose
                Tableau = Split(strLigne, "|")
                'on ecrit
                ThisWorkbook.Sheets(1).Cells(1, i) = Tableau(4)
                ThisWorkbook.Sheets(1).Cells(L, 1) = Tableau(1)
                ThisWorkbook.Sheets(1).Cells(L, 2) = Tableau(2)
                ThisWorkbook.Sheets(1).Cells(L, i) = Tableau(6)
            End If
        Wend
    End If
    Close intFic                                     'fermeture fichier
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Sub Fonction_concatenee()
    Dim Fichiers As Variant
    Dim i As Integer
    Dim wb As Workbook
    Dim donnees As Range
    Dim Message As String
     
    Fichiers = Application.GetOpenFilename("Fichiers dat (*.txt), *.txt", , , , True)
     
    If IsArray(Fichiers) = True Then
     
        Application.ScreenUpdating = False
     
        For i = LBound(Fichiers) To UBound(Fichiers)
     
            QStat Trim(Fichiers(i)), ThisWorkbook.Sheets(1).[A65536].End(xlUp).Row + 1, Message
     
        Next i
        Application.ScreenUpdating = True
        MsgBox IIf(Message = "", "All files are Corrects", Message)
    End If
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par gibba88 Voir le message
    Bonjour;

    J'ai crée une procédure contenant 3 parametres d'entrées "Sub QStat(Source As String, L As Integer, detect As Boolean)". La procédure marche trés bien.
    Je voudrais reinitialiser "L" à 4 (pour que l'affichage des données commence à partir de la 4 eme colonne ) .
    Actuellement la procédure commence l'affichage des données à partir la 2eme colonne.
    Vos suggestions seront les biens venues .
    Merci d'avance .
    Ben quoi ? Tu as juste à t'arranger pour que la valeur de L soit à 4, avant t'appeler ta sub. ou de mettre 4 directement à la place de L

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L = 4
    QStat("Alouette", L, detect)
    ou bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Simonac = 4
    QStat("Alouette", Simonac, detect)
    Ou bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QStat("Alouette", 4, detect)
    Ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QStats(source ,4, false)
    etc...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne comprends pas ta demande.

    Est-ce que tu veux que dans ta procédure, la variable L soit systématiquement à 4 ?
    Dans ce cas, il suffit de commencer ta routine par un L=4.
    Ou bien tu changes la fonction qui l'appelle en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QStat Trim(Fichiers(i)), 4, Message
    Ou est-ce que tu veux pourvoir changer cette valeur à la demande ?
    Dans ce cas, commence ta routine par un InputBox pour demander à l'utilisateur la valeur qu'il souhaite.

    Je ne vois pas trop où est le problème ?...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Pas sûr de bien comprendre non plus, mais en regardant, j'ai rouvé cela qui m'intrigue.
    • L correspond à un n° de ligne pas de colonne.
    • Ce sont les ligne 16 et 103 (i = 3 ; 1=i + 1) qui font que tu commence à la colonne 4.
    • A la fin tu écris 2 fois dans la même case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                ThisWorkbook.Sheets(1).Cells(1, i) = Tableau(4)
                ThisWorkbook.Sheets(1).Cells(L, 1) = Tableau(1)
                ThisWorkbook.Sheets(1).Cells(L, 2) = Tableau(2)
                ThisWorkbook.Sheets(1).Cells(L, i) = Tableau(6)

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/01/2012, 09h54
  2. demande avis : comment stocker les parametres d'une application
    Par ZashOne dans le forum Framework .NET
    Réponses: 9
    Dernier message: 30/03/2008, 20h14
  3. Réponses: 1
    Dernier message: 13/06/2007, 10h34
  4. Réponses: 2
    Dernier message: 29/11/2006, 12h52
  5. [Struts] Comment initialiser les valeurs d'un formulaire
    Par Sniper37 dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/04/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo