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 :

Code Excel pour remplir cases vides (régression linéaire)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    ingénieur procédés
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : ingénieur procédés
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Par défaut Code Excel pour remplir cases vides (régression linéaire)
    Bonjour à tous,

    Je vous présente d'abord le code que j'ai écrit (qui ne marche pas), et ensuite je vais vous dire quel est mon but.

    Voici mon code:

    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
    Sub linear_reg2()
     
    i = 2
    j = 3
    a = 2
     
        Do While i <= 5000
            If Cells(i, j) = "" Then idx_value1 = Cells(i - 1, j) And idx_empty = i
     
                Do While Cells(idx_empty + 1, j) = ""
                    idx_empty = idx_empty + 1
                Loop
     
                idx_value2 = idx_empty + 1
     
                diff_y = Cells(idx_value2, 3) - Cells(idx_value1, 3)
     
                diff_x = Cells(idx_value2, 2) - Cells(idx_value1, 2)
     
                Slope = diff_y / diff_x
     
                nb_cells = idx_empty - i + 1
                For idx = 1 To nb_cells
                    Cells(i + idx, 3).Value = Slope * Cells(i + idx, 2).Value
                    i = i + nb_cells + 1
     
     
     
                Next
                i = idx_empty + 1
    Loop
     
    End Sub
    Alors le but est de remplir les y, sachant que les x sont donnés, par exemple:
    x          y
    1          20
    3
    4
    5          25
    8          
    9
    14        60
    Donc comme vous pouvez le voir, il y a des cases y sans valeurs, et mon but est de les remplir en faisant une régression linéaire. Je ne comprends pas ce qui est faux dans mon code.

    Merci beaucoup d'avance pour votre aide.

    Bien cordialement,
    Nour.

  2. #2
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Première chose :
    On est d'accord : X est en colonne B et Y en colonne C

    Ce code ne va pas pour deux raisons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Cells(i, j) = "" Then idx_value1 = Cells(i - 1, j) And idx_empty = i
    Le résultat de idx_value1 sera un boolean (VRAI ou FAUX)
    Si la première ligne est renseignée, comme c'est le cas ici, les variables ne seront pas initialisées.

    Ce code ne va pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    diff_y = Cells(idx_value2, 3) - Cells(idx_value1, 3)
    idx_value correspond à la valeur de la cellule et tu l'utilises comme numéro de ligne.

  3. #3
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Voici ton code corrigé :
    Attention, il n'est pas fini!!! Je te laisse la sortie de boucle à gérer!!
    Surtout sur la dernière ligne du tableau est vide

    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
     
    Sub linear_reg2()
     
    i = 2
    j = 3
    a = 2
     
    ' On trouve la position du 1er vide
    Do While Cells(i, j) <> "" And i <= 5000
        i = i + 1
    Loop
    idx_empty = i - 1
     
     
    Do While i <= 5000
     
    ' On trouve la durée du vide
        Do While Cells(i, j) = ""
            i = i + 1
        Loop
     
        idx_empty2 = i
     
    ' On calcule les deltas
        diff_y = Cells(idx_empty2, 3) - Cells(idx_empty, 3)
        diff_x = Cells(idx_empty2, 2) - Cells(idx_empty, 2)
     
        Slope = diff_y / diff_x
     
    ' On renseigne les vides
        nb_cells = idx_empty2 - idx_empty - 1
        For idx = 1 To nb_cells
            Cells(idx_empty + idx, 3).Value = Slope * (Cells(idx_empty + idx, 2).Value - Cells(idx_empty, 2).Value) + Cells(idx_empty, 3).Value
        Next
     
    ' On trouve le prochain vide
        Do While Cells(i, j) <> "" And i <= 5000
            i = i + 1
        Loop
        idx_empty = i - 1
    Loop
     
    End Sub

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2009, 17h08
  2. macro excel pour remplir document
    Par the_djjd dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/02/2009, 08h38
  3. Réponses: 2
    Dernier message: 07/07/2008, 18h24
  4. [MySQL] Code php pour remplir un formulaire
    Par solaar dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/01/2008, 00h40
  5. Comment utiliser un fichier Excel pour remplir un ComboBox
    Par Heureux-oli dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/08/2007, 14h39

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