vba : range dynamique

C

chicobra

Guest
salut,

j'ai un petit pb pour créer un range, dont j'ai besoin pour alimenter un chart.
comment créer un range à partir de valeurs dynamiques ?

voici mon pb :

je voudrais faire :
-----
Dim vRange As Range
Set vRange = Range(Cells(maLigne, 5), Cells(maLigne, maCol))
-----
mais je me fais insulter à l'exécution...


avec un bidouille du genre :
-----
Dim vRange As Range
Cells(maLigne, 5).Select
Set vRange = Range(ActiveCell)
vRange.Resize(, maCol - 4).Select
-----
je me fait jeter pareil... :(


qq'un aurait-il une soluce ???
thanks
 
C

chicobra

Guest
hum, j'ai vu dans les archives du forum qu'on pouvait faire des trucs du genre :

Range("A"&maLigne)

donc pourquoi pas qqchose qui ressemble à :

Range(maLigne&"5:"&maLigne&maCol)

en convertissant les maLigne en caractère alphabétique !
possible ???
 
C

chicobra

Guest
arf, j'ai déjà essayé...

le pb c'est qu'aparemment on ne peut pas créer un objet Range avec cette syntaxe...

moi je voudrais faire comme Range(B4:B29) mais avec B et 29 comme variables (déjà connues)...
 
C

chicobra

Guest
j'ai trouvé sur le net une méthode de bourrin :

' tableau de conversion num vers alpha
colHeader("A","B","C","D","E","F","G","H","I","J","K","L")
' et ainsi de suite....

'création de mon range dynamique
Range(colHeader(5) & maLigne & ":" & colHeader(maCol) & maLigne)
'c pas beau mais ça passe !!!

qu'en pensez-vous ??
 
@

@+Thierry

Guest
Salut Chicobra, Pyrof et le Forum


Set de Plage Dynamique
Moi je ne me complique pas la vie comme çà (elle l'est suffisamment !!)

Voilà une solution simple de chez simple...

Sub PlageDynamique()
Dim Ca As Byte
Dim La As Long
Dim Cb As Byte
Dim Lb As Long
Dim Plage As Range
Dim Cell As Range

'Ici tes initialisation de variables...
Ca = 2
La = 2
Cb = 20
Lb = 20

Set Plage = Sheets("Sheet1").Range(Cells(La, Ca), Cells(Lb, Cb))

For Each Cell In Plage
Cell.Interior.Color = RGB(255, 0, 0) '(par exemple !! tout rouge ! lol)
Next
End Sub

Ensuite ....

Colonne
Vu que Chicobra cherchait à retourner une lettre pour la colonne, voici une astuce de Daniel Joss (MPFE)

Sub LettredelaColumn()
Dim Colonne As String
Dim Ligne As Long

Ligne = Cells(Rows.Count, "A").End(xlUp).Row

Range("A1").End(xlToRight).Activate
Colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2)
MsgBox "La Dernière Cellule de ce tableau est " & Colonne & Ligne
Range("A1").Activate
End Sub


Voilà avec çà tu as de quoi travailler Chicobra

Bon soirée
@+Thierry
 
J

Jean-Marie

Guest
Bonsoir, tout le monde

A ta question : comment créer un range à partir de plage dynamique pour alimenter un chart.

Je te réponds qu'il est possible de changer la plage des cellules affichée dans un graphe, sans manipulation de l'utilisateur, ni lancement d'une macro. Je m'étonne que Thierry ne te l'ait pas signalé, lui le forumeur le plus important XLD.

Regarde l'exemple, si tu veux d'autres explications, pas problème.
Cette astuce t'évitera sans doute de créer un graphe en VBA.

@+Jean-Marie
 

Pièces jointes

  • ClassGraphExemple.xls
    18 KB · Affichages: 1 263
  • ClassGraphExemple.xls
    18 KB · Affichages: 1 287
  • ClassGraphExemple.xls
    18 KB · Affichages: 1 283
@

@+Thierry

Guest
Bonsoir Jean Marie

Je t'avouerai, Jean Marie, que j'ai même pas vu qu'on parlait de Chart !! je suis arrivé directement dans les post de Pyrof et j'ai vu que on parlait de Range avec des méthodes plus ou moins catholiques!! lol

Et nous somme tous "Le Forumeur le plus Important d'XLD!!"

D'ailleurs la preuve tu es là pour rattraper le coup !
Bonne Soirée
@+Thierry
 

ThierryThB

XLDnaute Nouveau
Re : vba : range dynamique

salut,

j'ai un petit pb pour créer un range, dont j'ai besoin pour alimenter un chart.
comment créer un range à partir de valeurs dynamiques ?

voici mon pb :

je voudrais faire :
-----
Dim vRange As Range
Set vRange = Range(Cells(maLigne, 5), Cells(maLigne, maCol))
-----
mais je me fais insulter à l'exécution...


avec un bidouille du genre :
-----
Dim vRange As Range
Cells(maLigne, 5).Select
Set vRange = Range(ActiveCell)
vRange.Resize(, maCol - 4).Select
-----
je me fait jeter pareil... :(


qq'un aurait-il une soluce ???
thanks

Bonjour,

Je me permets de mettre un update sur ce sujet car il semble que cette question est recurrente aussi bien sur les forums francophones qu'anglophones que je frequente pas mal.

Les decaler et offset c'est pas mal mais il vient un moment ou on ne sait plus ou on est dans la feuille en coordonnees Row, Column.

Je reviens donc au message d'origine de Chicobra en tete de ce thread.
J'avais aussi une erreur sur une structure identique.

S etant l'active sheet je l'ai repete devant Range et Cells car en placant un Cells(1,1).Select juste avant (pour faire du debug) je me suis rendu compte que la reference de l'active sheet etait perdue.

Set SR = S.Range(S.Cells(6, 1).Address, S.Cells(6, R.Column).Address) 'Selection range
Set FindEnd = SR.Cells.Find(what:="END", lookin:=xlValues)

Hope it helps.

ThierryThB
 

Discussions similaires

Réponses
1
Affichages
164
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu