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

Macros et VBA Excel Discussion :

problème programmation VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut problème programmation VBA
    Bonjour à tous,

    Je débute dans la programmation VBA et j'ai un gros souci pour la réalisation d'une macro.

    J'ai déjà commencé la programmation mais je bloque.
    Il y a un erreur au niveau de la boucle For, de ce fait je n'arrive pas à continuer la programmation.

    Je vous joins le fichier que j'ai commencé.

    Merci pour votre aide.
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    De quelle boucle For tu parles? Montre ton code et où tu bloques?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Bonsoir,
    j'ai mis la ligne de commande en rouge.
    merci pour votre aide

    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
    Dim X, S
    Dim Ligne, Nb_Xi
    Dim Xetoil, Setoil As Double
    Dim Xietoil, Phi As Double
    Dim Xi_Tableau() As Double
    Dim Cpt As Integer
    Dim Xi_Tableau_X As Variant
    
    Sub Tableau()
    
        'Trier les données du plus petit au plus grand
            ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear
            ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add Key:=Range("B2:B15") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            
        With ActiveWorkbook.Worksheets("Données").Sort
            .SetRange Range("B1:B15")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            
        End With
    
        'Stockage de données dans un"tableau"
                    Ligne = 2
                    Nb_Xi = 0
    
       Do While Worksheets("Données").Cells(Ligne, 2).Value <> ""
            ReDim Preserve Xi_Tableau(Nb_Xi)
            Xi_Tableau(Nb_Xi) = Worksheets("Données").Cells(Ligne, 2).Value
        
            Nb_Xi = Nb_Xi + 1
            Ligne = Ligne + 1
        Loop
    
        'Ecrire dans une ligne après x données entrées non définies
            Application.Worksheets("Données").Cells(Ligne + 1, 1).Value = "Moyenne"
            Application.Worksheets("Données").Cells(Ligne + 2, 1).Value = "Ecart-Type"
            Application.Worksheets("Données").Cells(Ligne + 3, 1).Value = "Moyenne Robuste"
            Application.Worksheets("Données").Cells(Ligne + 4, 1).Value = "Ecart-Type Robuste"
            Application.Worksheets("Données").Cells(Ligne + 5, 1).Value = "Phi"
    
        'Appliquer les formules dans une ligne après x données entrées non définies
            Application.Worksheets("Données").Cells(Ligne + 1, 2).Value = WorksheetFunction.Average(Xi_Tableau)
            Application.Worksheets("Données").Cells(Ligne + 2, 2).Value = WorksheetFunction.StDev(Xi_Tableau)
            Application.Worksheets("Données").Cells(Ligne + 3, 2).Value = WorksheetFunction.Median(Xi_Tableau)
            Application.Worksheets("Données").Cells(Ligne + 4, 2).Value = 1.483 * WorksheetFunction.Median(Xi_Tableau)
            Application.Worksheets("Données").Cells(Ligne + 5, 2).Value = 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
    
        'Calculs et variables
        
            X = WorksheetFunction.Average(Xi_Tableau)
            S = WorksheetFunction.StDev(Xi_Tableau)
            Xetoil = WorksheetFunction.Median(Xi_Tableau)
            Setoil = 1.483 * WorksheetFunction.Median(Xi_Tableau)
            Phi = 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
            Xietoil = 1.483 * WorksheetFunction.Median(Xi_Tableau) - 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
    
        Boucle de 0 à ....
        
            For Cpt = 0 To Nb_Xi - 1
                ReDim Preserve Xi_Tableau_X(Cpt)
                Xi_Tableau_X(Cpt) = Abs(Xi_Tableau(Cpt) - Xetoil)
            Next Cpt
            
    
    
    
        'Conditionnement de la comparaison
    
    '    If Xistar < Xstar - Phi Then
    '        Application.Worksheets("Données").Cells(Ligne + 6, 1).Value = "Xi*"
    '        Application.Worksheets("Données").Cells(Ligne + 6, 2).Value = 1.483 * WorksheetFunction.Median(Xi_Tableau) - 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
    '    Else
    '        If Xistar < Xstar + Phi Then
    '        Application.Worksheets("Données").Cells(Ligne + 6, 1).Value = "Xi*"
    '        Application.Worksheets("Données").Cells(Ligne + 6, 2).Value = 1.483 * WorksheetFunction.Median(Xi_Tableau) + 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
    '        End If
    '    Else
    ''la je ne sais pas c'est Xi
    'Application.Worksheets("Données").Cells(Ligne + 6, 1).Value = "Xi*"
    '
    '    End If
    
    End Sub

  4. #4
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par skippy80 Voir le message
    Bonsoir,
    j'ai mis la ligne de commande en rouge.
    merci pour votre aide
    ...
    For Cpt = 0 To Nb_Xi - 1
    ReDim Preserve Xi_Tableau_X(Cpt)
    Xi_Tableau_X(Cpt) = Abs(Xi_Tableau(Cpt) - Xetoil)
    Next Cpt
    ...
    bonsoir,
    Tu dois initialiser le variant Xi_Tableau_X en tableau d'abord depuis l'extérieur de la boucle, à l'aide de l'instruction Redim, avant d'instruire avec Redim Preserve.
    comme ceci:

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Ok, merci. Maintenant la boucle fonctionne correctement. En fait il faut vraiment penser à tout pour la programmation mais je n'ai que 4h de cours derrière moi.


    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Problème programmation VBA débutant :)
    Par Doby77 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 13/11/2014, 10h20
  2. [XL-2003] Problème programme VBA
    Par iSebi dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/05/2012, 09h52
  3. Problème programme VBA
    Par folledebrune dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/03/2012, 10h17
  4. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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