Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 28/11/2006, 20h29   #1
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Par défaut Transmettre une variable tableau

Bonjour à tous,

Je suis tombé sur un os :
J'ai une fonction dans laquelle il y a un tableau. Comment puis je transmettre ce tableau à la procédure appelante ?
Merci de votre aide . . .

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
 
Function CherchEtud()
Dim ChargEtude As String 'Défini le CE recherché
Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
n As Integer 'Défini le n° de rang dans le tableau
 
'Initialisation
n = 0
ReDim NamEtud(n)
ChargEtude = Worksheets("cachée").Range("C100").Value
 
'Vérifie si c'est le bon CE
For NbLigne = 7 To Worksheets("Synthèse").Cells(7, 2).End(xlDown).Row
        'Si oui, on l'enregistre dans le tableau
        If CStr(Worksheets("Synthèse").Cells(NbLigne, 2).Value) = ChargEtude Then
            n = n + 1
            ReDim Preserve NamEtud(n)
            NamEtud(n) = Worksheets("Synthèse").Cells(NbLigne, 1).Value
End If
 
Next NbLigne
 
MsgBox "fin"
?????CherchEtud = NamEtud() '?????    L'OS EST ICI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
End Function
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 21h30   #2
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848


A quoi te sert la fonction "CherchEtud()" ?
Quel résultat veux tu obtenir dans la cellule ou tu va saisir "=CherchEtud()" ?

A+
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 22h04   #3
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
En fait c'est une fonction appelée par une procédure .
Elle m'est utile a obtenir des informations différentes selon le résultat rentré dans une listbox.
Je l'ai écris dans une fonction, mais peut etre est ce plus judicieux d'utilider une procédure ? ?
Et meme dans ce cas, comment transmettre le tableau ?

Merci se te pencher sur mon problème
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 22h08   #4
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848
Normalement si tu déclares "NamEtud()" comme variable publique,
Il n'y a pas besoin de l'utiliser dans une fonction.

Code :
Public NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
A mettre en entête du module qui appelle la fonction à transformer en procédure !

A+
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 22h15   #5
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Super c'est précisément ce que je voulais.
Je retiens !

Encore merci
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 23h15   #6
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Une dernière question quand meme : VB me met le message suivant

"Erreur de compilation :
Nom ambigu détecté"

J'ai beau changé de nom, ou passer le type de variable de Integer à Variant, ca ne change rien.

Pourquoi ? Je ne comprend pas la cause !
Merci
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 23h30   #7
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848
Il ne faut pas que tu laisses la déclaration de variable dans ta procédure "CherchEtud()"

Code :
1
2
3
4
5
Function CherchEtud()
Dim ChargEtude As String 'Défini le CE recherché
' Il faut supprimer la ligne ci dessous
Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
Dim n As Integer 'Défini le n° de rang dans le tableau
Peux tu montrer ton code ?
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 23h49   #8
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Voici mon code :

Procédure principale :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Yahoo()
Application.ScreenUpdating = False
Dim Pl As Integer   'Correspond au numéro de tableau en cours
Dim PlMax As Integer    'Correspond au Nbre max d'études
 
PlMax = 3
For Pl = 1 To PlMax
 
x = Placement(Pl)
Call Tableau(x, 5)
Call Misenforme(x, 5)
Next Pl
End Sub
Et pour les fonctions :
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
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
Option Explicit
Public NamEtude() As Integer
 
Sub NamEtud()
Dim ChargEtude As String 'Défini le CE recherché
Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
n As Integer 'Défini le n° de rang dans le tableau
 
'Initialisation
n = 0
ReDim NamEtud(n)
ChargEtude = Worksheets("cachée").Range("C100").Value
 
'Vérifie si c'est le bon CE
For NbLigne = 7 To Worksheets("Synthèse").Cells(7, 2).End(xlDown).Row
 
        'Si oui, on l'enregistre dans le tableau
        If CStr(Worksheets("Synthèse").Cells(NbLigne, 2).Value) = ChargEtude Then
            n = n + 1
            ReDim Preserve NamEtud(n)
            NamEtud(n) = Worksheets("Synthèse").Cells(NbLigne, 1).Value
        End If
 
Next NbLigne
n = 0
MsgBox "fin"
CherchEtud = NamEtud()
 
 
End Sub
Function Placement(Pl)
If Pl = 1 Then
Placement = 16
Else
Placement = Pl * 12 + 4
End If
End Function
 
Function Tableau(x, y)
Dim MonTableau(10, 1) As String
 
MonTableau(0, 0) = "N° d'étude :"
MonTableau(0, 1) = Sheets("synthèse").Cells((h - 4) / 12 + 7, 8).Value
MonTableau(1, 0) = ""
MonTableau(1, 1) = ""
MonTableau(2, 0) = "Coût horaire :"
MonTableau(2, 1) = "=CoutAM"
MonTableau(3, 0) = "Budget de l'étude :"
MonTableau(3, 1) = Sheets("synthèse").Cells((h - 4) / 12 + 7, 10).Value
MonTableau(4, 0) = "Nbre d'heures prévues :"
MonTableau(4, 1) = Sheets("synthèse").Cells((h - 4) / 12 + 7, 11).Value
MonTableau(5, 0) = "Bilan des heures :"
MonTableau(5, 1) = "=R[-2]C-R[3]C"
MonTableau(6, 0) = "Valorisation des heures :"
MonTableau(6, 1) = "=R[-4]C*R[2]C"
MonTableau(7, 0) = "Montant des achats :"
MonTableau(7, 1) = "1000"
MonTableau(8, 0) = "Nombre d'heures passées :"
MonTableau(8, 1) = "=GETPIVOTDATA(""Heures"",'TCD Global'!R[-17]C[-4],""Salarié"",R7C[-4],""N° affaire"",R[-8]C6)"
MonTableau(9, 0) = "Résultat :"
MonTableau(9, 1) = "=R[-6]C-(R[-3]C+R[-2]C)"
 
With Cells(x, y)
    .Offset(0, 0).Value = MonTableau(0, 0)
    .Offset(0, 1).Value = MonTableau(0, 1)
    .Offset(1, 0).Value = MonTableau(1, 0)
    .Offset(1, 1).Value = MonTableau(1, 1)
    .Offset(2, 0).Value = MonTableau(2, 0)
    .Offset(2, 1).Value = MonTableau(2, 1)
    .Offset(3, 0).Value = MonTableau(3, 0)
    .Offset(3, 1).Value = MonTableau(3, 1)
    .Offset(4, 0).Value = MonTableau(4, 0)
    .Offset(4, 1).FormulaR1C1 = MonTableau(4, 1)
    .Offset(5, 0).Value = MonTableau(5, 0)
    .Offset(5, 1).Value = MonTableau(5, 1)
    .Offset(6, 0).Value = MonTableau(6, 0)
    .Offset(6, 1).Value = MonTableau(6, 1)
    .Offset(7, 0).Value = MonTableau(7, 0)
    .Offset(7, 1).Value = MonTableau(7, 1)
    .Offset(8, 0).Value = MonTableau(8, 0)
    .Offset(8, 1).FormulaR1C1 = MonTableau(8, 1)
End With
End Function
 
Function Misenforme(x, y)
 
With Range(Cells(x, y), Cells(x + 8, y + 1))
    .Interior.Color = 33
    .Font.ColorIndex = 2
End With
 
With Range(Cells(x + 1, y), Cells(x + 8, y + 1))
    .Interior.ColorIndex = 34
    .Font.ColorIndex = 1
End With
 
With Range(Cells(x, y), Cells(x + 8, y + 1))
    .BorderAround ColorIndex:=1, Weight:=xlThin
 
End With
End Function
Mais comme je travaille dessus dans tous les sens il y a des trucs qui ne marchent pas encore, mais c'est temporaire
C'est surtout le problème de définir NamEtudeen Public
Merci pour ton aide, ca fait plaisir ...
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 23h57   #9
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848
Dans ta procédure principale il faut mettre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
Public NamEtude() As Integer
 
Sub Yahoo()
Application.ScreenUpdating = False
Dim Pl As Integer   'Correspond au numéro de tableau en cours
Dim PlMax As Integer    'Correspond au Nbre max d'études
 
PlMax = 3
For Pl = 1 To PlMax
 
x = Placement(Pl)
Call Tableau(x, 5)
Call Misenforme(x, 5)
Next Pl
End Sub
Pour tes "fonctions"
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
Option Explicit
' Public NamEtude() As Integer = NON
 
'Sub NamEtud() = NON ne jamais nommer une procédure ou fonction avec le nom d'une variable

Sub CherchEtud()
Dim ChargEtude As String 'Défini le CE recherché
'Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché = NON
Dim n As Integer 'Défini le n° de rang dans le tableau
 
'Initialisation
n = 0
ReDim NamEtud(n)
ChargEtude = Worksheets("cachée").Range("C100").Value
 
'Vérifie si c'est le bon CE
For NbLigne = 7 To Worksheets("Synthèse").Cells(7, 2).End(xlDown).Row
        
        'Si oui, on l'enregistre dans le tableau
        If CStr(Worksheets("Synthèse").Cells(NbLigne, 2).Value) = ChargEtude Then
            n = n + 1
            ReDim Preserve NamEtud(n)
            NamEtud(n) = Worksheets("Synthèse").Cells(NbLigne, 1).Value
        End If
 
Next NbLigne
n = 0
MsgBox "fin"
End Sub
...
Je ne vois pas ou tu utilises "CherchEtud()" anciennement "NamEtud()" ?
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 00h03   #10
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Citation:
Je ne vois pas ou tu utilises "CherchEtud()" anciennement "NamEtud()" ?
Oui j'ai remarqué. En fait comme ca devient un peu trop brouillion, je réécris l'ensemmble pour etre plus clair. Et il y a effectivement des variables qui n'ont plus lieu d'etre.

Ca devrait etre plus clair demain.
Pour l'heure je vais dormir, mais tu m'as donné de bonnes bases pour avancer demain.
C'est vraiment super. Merci
(c'est mon première vrai utilisation de VBA, ca se sens ... )
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 00h05   #11
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
"Nom ambigu..." provient souvent du fait que tu as un autre macro du même nom
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 12h28   #12
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Désolé pour les questions un peu bete, mais en fait je suis pressé par le temps, donc moins le temps de chercher.

La question du jour :

Lorsque ma procédure principale (Yahoo) lance CherEtude, tout se déroule bien, mais de retour dans Yahoo, NamEtud est vide alors qu'elle contenait des valeurs ds CherEtud. Quel est la cause ? J'ai fait plusieurs essai, rien n'est concluent ... Merci et petit à petit, je serais moins

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
 
Public NamEtud() As Integer
 
Sub Yahoo()
Application.ScreenUpdating = False
Dim Pl As Integer   'Correspond au numéro de tableau en cours
Dim PlMax As Integer    'Correspond au Nbre max d'études
 
Call CherchEtud
MsgBox NamEtud(2)
PlMax = 3
For Pl = 1 To PlMax     'Défini le nombre de tableaux
 
x = Placement(Pl)       'Recherche la cellule en haut/gauchedu tableau N° Pl
Call Tableau(x, 5)      'Ecris le tableau N° Pl
Call Misenforme(x, 5)   'Mise ne forme du tableau N° Pl
Next Pl
End Sub
 
Sub CherchEtud()
Dim ChargEtude As String 'Défini le CE recherché
Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
Dim n As Integer 'Défini le n° de rang dans le tableau
 
'Initialisation
n = 0
ReDim NamEtud(n)
ChargEtude = Worksheets("cachée").Range("C100").Value
 
'Vérifie si c'est le bon CE
For NbLigne = 7 To Worksheets("Synthèse").Cells(7, 2).End(xlDown).Row
        'Si oui, on l'enregistre dans le tableau
        If CStr(Worksheets("Synthèse").Cells(NbLigne, 2).Value) = ChargEtude Then
            n = n + 1
            ReDim Preserve NamEtud(n)
            NamEtud(n) = Worksheets("Synthèse").Cells(NbLigne, 1).Value
End If
 
Next NbLigne
MsgBox "fin"
End Sub
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 12h56   #13
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
A première vue, tu déclares NamEtud en public, puis en local. Supprime cette ligne dans la procédure
Code :
Dim NamEtud() As Integer 'Tableau contenant toutes les études correpndant au CE recherché
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 14h00   #14
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848


Il est têtu ce WagaSeb, mais l'informatique l'est encore plus

Je te signale que ce que t'as dis ouskel'n'or est bon et que je t'en avais parler plus haut !

Maintenant si tu es pressé et que tu ne lis pas ce que l'on t'écrit, ne t'étonne pas d'y être encore !

Désolé, mais faut que je pousse un coup de gueule
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 14h39   #15
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Oups, j'avais rajouté une ligne sans enlever la première ... méa-culpa BrunoM45 !
Et merci aussi à ouskel'n'or.
Et je risque en plus de vous reposer quelques questions dans pas longtemps ...
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 14h41   #16
Membre émérite
 
Avatar de BrunoM45
 
Homme
Assistant de Gestion - Responsable Informatique
Inscription : juillet 2003
Messages : 646
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Assistant de Gestion - Responsable Informatique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juillet 2003
Messages : 646
Points : 848
Points : 848
Aucun problème

Mais il faut vraiment regarder ce que l'on écrit

A+
__________________
Vous avez la solution à votre problème, pensez au tag :
est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.
BrunoM45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 18h39   #17
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Pour l'instant tout se passe bien . . .
Génial ! ! !
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 15h30   #18
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 128
Détails du profil
Informations personnelles :
Localisation : France, Haute Savoie (Rhône Alpes)

Informations forums :
Inscription : septembre 2006
Messages : 128
Points : 36
Points : 36
Ca y est, j'ai des questions

Ma macro principale me créer une série de tableau (nombre variable bien sur ...)

Lorsque je clique à la souris n'importe où, un test se fait pour savoir si la vide est vide ou non. Un graph s'affiche selon que la ligne est vide ou non
(cf code UpdateChart)

Mais voila, j'ai besoin d'actualiser mon graph selon le tableau dans lequel ma cellule est sélectionnée. Comment faire ??? Je cherche mais il me manque la direction où chercher ...
Merci de m'éclaire un peu ...

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
 
Sub UpdateChart()
    Dim TheChartObj As ChartObject
    Dim TheChart As Chart
    Dim UserRow As Long
    Dim CatTitles As Range
    Dim SrcRange As Range
    Dim SourceData As Range
 
    If Sheets("Bilan").CheckBox1 Then
        Set TheChartObj = ActiveSheet.ChartObjects(1)
        Set TheChart = TheChartObj.Chart
        UserRow = ActiveCell.Row
        If IsEmpty(Cells(UserRow, 5)) Then
            TheChartObj.Visible = False
        Else
            Set CatTitles = Range("I8:J8")
            Set SrcRange = Range(Cells(9, 9), Cells(10, 10))
            Set SourceData = Union(CatTitles, SrcRange)
            TheChart.SetSourceData _
              Source:=SourceData, PlotBy:=xlRows
            TheChartObj.Visible = True
        End If
    End If
End Sub
WagaSeb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 08h46   #19
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Dans les deux lignes suivantes, pour désigner tes plages, tu remplaces les adresses par des variables
Citation:
Set CatTitles = Range("I8:J8")
Set SrcRange = Range(Cells(9, 9), Cells(10, 10))
Ex :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
            NoLigne1 = 8
            NoLigne2 = 8
            NoCol1 = 9
            NoCol2 = 10
 
            NoLigne3 = 9
            NoCol3 = 9
            NoLigne4 = 10
            NoCol4 = 10
 
            Set CatTitles = Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2))
            Set SrcRange = Range(Cells(NoLigne3,NoCol3),Cells(NoLigne4,NoCol4))
Pour la nécéssité de remplacer toutes tes adresses par des variables, c'est toi qui vois
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 09h06   #20
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
tu peu utiliser le "CurrentRegion" .. si en te plaçant sur ta cellule puis en actionnant CTRL * la zone sélectionné est bien ta plage de donnée.... ton code peu être modifier en s'inspirant de :

Code :
1
2
3
4
 
set SourceData  = ActiveCell.CurrentRegion
TheChart.SetSourceData _
              Source:=SourceData, PlotBy:=xlRows
.. il y as surement des tests à effectuer sur la cellule sélectionné...?
bbil 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 13h23.


 
 
 
 
Partenaires

Hébergement Web