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 de code pour dérivée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Problème de code pour dérivée
    Bonjour,

    Je souhaite réaliser la dérivée de toutes les colonnes contenant des valeurs de ma feuille ws3 sauf la colonne 3 sur une nouvelle feuille ws4. De plus la colonne A de la feuille ws3 sera recopiée à partir de la ligne 2 jusqu'à la dernière ligne -1 contenant des nombres.

    formule pour la dérivée de la valeur B2 feuille 3 (renvoie la valeur en B1 feuille 4):

    (B1 feuille 4)= [(B3 feuille 3) - (B1 feuille 3)]/[(A3 feuille 3)-(A1 feuille 3)]


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ws1.Range("A:A").Copy ws4.Range("A:A")
    'dérivée première de la feuille 3 pour renseigner la feuille 4
    For Col = PremC1 To DerC1 - 2
        For Lig = PremL1 + 1 To DerL1 - 1
            ws4.Cells(Lig, Col + 1) = (ws3.Cells(Lig + 1, Col + 1) - ws3.Cells(Lig - 1, Col + 1)) / (ws3.Cells(Lig + 1, 1) - ws3.Cells(Lig - 1, 1))
        Next Lig
    Next Col
    Ce code fonctionne mais le problème est que mes cellules B1, C1, ... et BderL, CderL,... sont vides mais pas les cellules A1 et A derL.

    Je souhaiterais donc que les valeurs A1 et AderL soient supprimées (uniquement sur la feuille 4) et que par conséquent les données qui s'inscrivent actuellement en A2, B2, C2 ... s'inscrivent en A1, B1, C1, ...

    Comment dois je modifier mon code

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour,

    Suites aux différents posts sur le forum j'ai pu résoudre mon problème.

    Un énorme merci à Daniel.

    Voici mon code (pour dérivée une courbe) pour ceux que ça intéresse :

    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
    Sub Copie()
     
    'Déclaration des variables
        Dim ws1 As Worksheet, ws4 As Worksheet
        Const PremL1 = 1 'Première ligne de données dans la feuille 1
        Const PremC1 = 1 'Première colonne de données dans la feuille 1
        Dim DerL1 As Long 'Dernière ligne de données dans la feuille 1
        Dim DerC1 As Long 'Dernière colonne de données dans la feuille 1
        Dim Col As Long
        Dim Lig As Long
     
        'Attribution de valeurs
        Set ws1 = Worksheets("Données brutes") 'L'objet Feuille 1 est attribué à la variable ws1
        Set ws4 = Worksheets("Dérivée")
     
        'Recherche de la dernière ligne renseignée dans la colonne A de la feuille 1
        DerL1 = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
        'Recherche de la dernière colonne renseignée dans la ligne 1 de la feuille 1
        DerC1 = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
     
        'Recopie de la colonne A2 à ADerL1-1 de la feuille 1 dans la feuille 4
        ws1.Range(ws1.Cells(2, 1), ws1.Cells(DerL1 - 1, 1)).Copy ws4.Range("A1")
     
        'dérivée première de la feuille 3 pour renseigner la feuille 4
            For Col = PremC1 To DerC1 - 2
                For Lig = PremL1 + 1 To DerL1 - 1
                    ws4.Cells(Lig - 1, Col + 1) = (ws3.Cells(Lig + 1, Col + 1) - ws3.Cells(Lig - 1, Col + 1)) / (ws3.Cells(Lig + 1, 1) - ws3.Cells(Lig - 1, 1))
                Next Lig
                        'ajout d'un classeur avec 1 feuille
                        Workbooks.Add 1
                        'copie des colonnes qui vont bien dans le nouveau classeur
                        ws4.[A:A].Copy [A1]
                        ws4.Cells(1, Col).Offset(0, 1).EntireColumn.Copy [B1]
                        'enregistrement au format texte
                        ActiveWorkbook.SaveAs ws0.[E14] & Col & ".txt", xlTextWindows
                        'fermeture du classeur texte
                        ActiveWorkbook.Close False
            Next Col
     
        'Libère les ressources
        Set ws1 = Nothing
        Set ws4 = Nothing
     
    End Sub
    Cordialement

    Vincent

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 23/07/2012, 14h32
  2. Problème de code pour MsgBox
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/01/2012, 11h42
  3. probléme de code pour mot de passe oublié
    Par Jaafar_scorpion dans le forum Android
    Réponses: 5
    Dernier message: 10/06/2011, 12h34
  4. problème de code pour police
    Par demando77 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/03/2008, 18h42

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