Définition d'une plage de données dans une boucle

Bonjour,

Je bute aujourd'hui sur une boucle dans laquelle je traite des "Range"

Et ça j'aime pas beaucoup... car j'ai du mal à saisir la syntaxe...

Je traite 52 colonnes de données au bas desquelle j'insère un mini-graphique

Ce que je n'arrive pas à faire, c'est extraire le nom et redéfinir la plage à chaque "next" (parties surlignées)

Je sais que dans le code ci dessous ça ne fonctionne pas. Mais c'est pour montrer l'idée..

J'espère juste la syntaxe, après j'adapterai.

Dim NcoL As Integer
Dim Nlg As Integer

For NcoL = 2 To 206 Step 4
    Nlg = Cells(Rows.Count, NcoL).End(xlUp).Row
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.Parent.Name = Range(NcoL & "2").Value
    plage_donnees = "'" & ActiveSheet.Name & "'!$NcoL$3:$NcoL+2$" & Cells(Rows.Count, Nlg).End(xlUp).Row
    '---etc.....
Next

Merci pour votre aide;-)

Bonjour

Cela pourrait donner un truc de ce style

plage_donnees = "'" & ActiveSheet.Name & "'!$" & NcoL & "$3:$" & NcoL + 2 & "$" & Cells(Rows.Count, Nlg).End(xlUp).Row

Je ne comprends pas

Nlg est considéré comme ligne dans

Nlg = Cells(Rows.Count, NcoL).End(xlUp).Row

mais est considéré comme colonne dans

plage_donnees = "'" & ActiveSheet.Name & "'!$" & NcoL & "$3:$" & NcoL + 2 & "$" & Cells(Rows.Count, Nlg).End(xlUp).Row

Mais cela doit être une astuce

Pour l'autre ligne

ActiveChart.Parent.Name = Cells(2, NcoL).Value

Mais c'est une écriture que je ne connais (plus l'habitude de lire la propriété Parent, que de la définir), mais bon suis très loin de tout connaître

Merci Banzai64 pour ta réponse.

Le code était en vrac comme je l'ai précisé.

C'était surtout pour donner une idée de ce que je souhaitais faire.

Malgré ton aide, je n'y arrive pas.

Voici en PJ l'exemple de ce que j'essaie de faire, mais ça ne fonctionne pas...

La boucle crée et positionne les graphiques, mais je n'arrive pas à les remplir...

PS1: J'ai donné un nom à la légende pour pouvoir la supprimer, car sinon, je n'y arrivais pas.

PS2: Pourquoi je m'attaque à des choses hors de ma portée ??

9travail.zip (17.96 Ko)

En fait, je n'arrive pas à écrire ce "Range"

La ligne en remarque est un exemple, et le 3 est une constante.

For NcoL = 3 To 206 Step 4
    Nlg = Cells(Rows.Count, NcoL).End(xlUp).Row
        'ActiveChart.SetSourceData Source:=Range("B3:B10,D3:D10")
        ActiveChart.SetSourceData Source:=Range("NcoL 3 : NcoL Nlg , (NcoL + 2) 3 : (NcoL + 2) Nlg")
Next

Bonjour

Si j'ai compris

 plage_donnees = "'" & ActiveSheet.Name & "'!" & Range(Cells(3, NcoL - 1), Cells(Nlg, NcoL - 1)).Address & ":" & Range(Cells(3, NcoL + 1), Cells(Nlg, NcoL + 1)).Address

Merci Banzai64, ça fonctionne maintenant.

J'ai seulement remplacé

.......Address &":"& Range(Cells(3, NcoL + 1),....... 

par

.......Address &","& Range(Cells(3, NcoL + 1),....... 

car je souhaitais 2 plages séparées comme dans l'exemple plus haut.

J'ai définitivement renoncé à maitriser les différentes façons dont on peut traiter la commande "Range" ...

Ci joint un fichier exemple de ce que je souhaitais faire.

Si quelqu'un voit des simplifications dans le code (pour le même résultat ), je suis preneur !!

Merci en tout cas ...

10travail-1.zip (15.95 Ko)
Rechercher des sujets similaires à "definition plage donnees boucle"