Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 15h37   #1
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
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 :
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
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 07h13   #2
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
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 :
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
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h10.


 
 
 
 
Partenaires

Hébergement Web