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 06/10/2011, 16h42   #1
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 326
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juin 2011
Messages : 326
Points : 69
Points : 69
Par défaut Code qui fonctionne depuis un module mais pas depuis un workbook

Bonjour à tous,

J'ai fait un code un peu laborieux dans un module où il semblait fonctionner. Mais comme je n'ai pas réussi à appeler ses methodes depuis un code situé dans thisworkbook, je l'ai replacé dans thisworkbook, et là il ne fonctionne plus.

Arrivé à "While (Cells(i + 24, 2).Value <> 0)" il saute direct à la fin alors que la cellule n'est pas nulle...

Je devrais apprendre mieux vba avant de faire tout çà mais c'est dans l'urgence...

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
Private Sub CZGrid()
Dim i As Integer, j As Integer
 
Worksheets("Speed & Aero Map").Select
 
i = 0
While (Cells(i + 24, 2).Value <> 0)
i = i + 1
ReDim Preserve FrontRideHeightCZ(i)
FrontRideHeightCZ(i) = Cells(i + 23, 2).Value
Wend
 
i = 0
While (Cells(23, i + 3).Value <> 0)
i = i + 1
ReDim Preserve RearRideHeightCZ(i)
RearRideHeightCZ(i) = Cells(23, i + 2).Value
Wend
 
ReDim CZ(UBound(FrontRideHeightCZ), UBound(RearRideHeightCZ))
 
For i = 1 To UBound(FrontRideHeightCZ)
    For j = 1 To UBound(RearRideHeightCZ)
 
        CZ(i, j) = Cells(i + 23, j + 2).Value
 
    Next
Next
 
End Sub
Gualino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 17h53   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Au lieu de sélectionner la feuille avant d'y lires les données, il suffit d’adresser convenablement les range.
Un autre amélioration consiste à travailler avec des variables tableaux au lieu des vas et vient entre vba et feuille.
Pour la pédagogie, j'ai utilisé des variables tableaux intermédiaires TbCol,TbLig et TbData pour remplir tes FrontRideHeightCZ, RearRideHaightCZ et CZ (Tu peux travailler directement avec les variables tableaux intermédiaires à 2 dimensions, cf ci dessous)
Une dernière remarque, le code doit être public dans un module standard pour qu'il soit reconnu à partir de n'importe quel endroit de ton projet

Donc, code dans module standard:
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
Option Explicit
Public FrontRideHeightCZ
Public RearRideHeightCZ
Public CZ
 
Public Sub CZGrid()
Dim LastLig As Long, i As Long
Dim LastCol As Integer, j As Integer
Dim TbCol, TbLig, TbData
 
With ThisWorkbook.Worksheets("Speed & Aero Map")
    LastLig = .Cells(.Rows.Count, 2).End(xlUp).Row
    TbLig = .Range(.Cells(24, 2), .Cells(LastLig, 2))
    LastCol = .Cells(23, .Columns.Count).End(xlToLeft).Column
    TbCol = .Range(.Cells(23, 3), .Cells(23, LastCol))
    TbData = .Range(.Cells(24, 3), .Cells(LastLig, LastCol))
End With
 
ReDim FrontRideHeightCZ(1 To UBound(TbLig, 1))
ReDim RearRideHeightCZ(1 To UBound(TbCol, 2))
ReDim CZ(1 To UBound(TbData, 1), 1 To UBound(TbData, 2))
 
For i = 1 To UBound(TbLig, 1)
    FrontRideHeightCZ(i) = TbLig(i, 1)
Next i
For j = 1 To UBound(TbCol, 2)
    RearRideHeightCZ(j) = TbCol(1, j)
    For i = 1 To UBound(TbLig, 1)
        CZ(i, j) = TbData(i, j)
    Next i
Next j
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/10/2011, 18h48   #3
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 326
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juin 2011
Messages : 326
Points : 69
Points : 69
Merci!
Gualino 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 01h03.


 
 
 
 
Partenaires

Hébergement Web