vba : range dynamique

  • Initiateur de la discussion Initiateur de la discussion chicobra
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 ???
 
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)...
 
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 ??
 
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
 
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

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
 
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
 
Re : vba : range dynamique

Bonsoir JM de Melbourne

ah ah ah 😉 merci pour le welcome.
2012 ah bon ?
J'avais vu pour le 2003 mais mon message est adresse a ceux qui comme moi tomberont dessus.

@+

ThierryThB
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
Réponses
2
Affichages
769
Réponses
1
Affichages
668
Réponses
4
Affichages
586
Retour