Comment sélectionner la dernière colonne d'une ligne de données?

Fermé
eglantine217 Messages postés 54 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 3 mars 2013 - 3 févr. 2013 à 12:23
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 18 avril 2013 à 23:07
Bonjour,

Mon objectif serait d'automatiser un graphique excel, j'ai trouvé un super bon tutoriel qui explique cela, le problème est que ma plage de cellule varie tous les mois
exemple début de A1 à C2 mais le mois suivant sera de A1 à D2 et je ne sais pas comment dire en vba "sélectionne la dernière colonne remplit"

lorsque c'est une ligne qui varie j'ai la formule suivante
ActiveSheet.Range("a1").End(xlDown).Select


mais je n'ai pas de formule pour la colonne qui varie (en dessous j'ai posté un code issue d'un tutoriel que j'ai essayé d'adapter"

Sub graphique() 

Application.ScreenUpdating = False 
ThisWorkbook.Sheets("CR").Range("B2:G6").Copy 

'créer un nouveau classeur et y coller les données 
Set nouv = Workbooks.Add 
Set pg = nouv.Sheets(1) 
pg.Paste 
pg.Cells(1).PasteSpecial Paste:=xlValues 

'tracer le graphique 
Set gr = nouv.Charts.Add 
With gr 
.SetSourceData Source:=Sheets("Feuil1").Range("A1:F5"), PlotBy:=xlRows 
.ChartType = xlLine 
.Location Where:=xlLocationAsNewSheet 
.Axes(xlCategory, xlPrimary).HasTitle = True 
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "semaine" 
.Axes(xlValue, xlPrimary).HasTitle = True 
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "nombre" 
.PlotArea.Interior.ColorIndex = 2 
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot 
.ChartArea.Font.Size = 14 
.Deselect 
End With 
Application.ScreenUpdating = True 

'faire le ménage 
Set pg = Nothing 
Set gr = Nothing 
Set nouv = Nothing 
End Sub 

2 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 3/02/2013 à 18:43
Bonjour

plusieurs solutions

1. la dernière colonne (sous forme de nombre) remplie du classeur
DerCol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column

2. la dernière colonne (sous forme de nombre) remplie de la ligne 3
derco = Cells(3, Columns.Count).End(xlToLeft).Column

3. colonnes sous forme de lettre
Dim a As String, derli as long , derco as string, premli as long, premco as string     
a = ActiveSheet.UsedRange.Address     
derli = Split(a, "$")(4)     
derco = Split(a, "$")(3)     
premli = Replace(Split(a, "$")(2), ":", "")     
premco = Split(a, "$")(1) 

4. dernière colonne (sous forme de lettre ) de la ligne 3
Dim derco As String, ad As String  
ad = Cells(3, Columns.Count).End(xlToLeft).Address  
derco = Split(ad, "$")(1)

Bon courage
0
ziwou Messages postés 3 Date d'inscription mercredi 17 avril 2013 Statut Membre Dernière intervention 18 avril 2013
18 avril 2013 à 10:07
Desolé mais dans ta solution numéro 4) je ne comprend pas a quoi correspond le ad, et a quoi correspond le derco.
Ou est ce qu'il faut adapter ces variables dans le code ?
merci d'avance
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
18 avril 2013 à 23:07
Bonsoir à tous,

Tu as essayé de faire ton graphique avec toutes les colonnes ?
Si les cellules sont vides normalement excel ne les prend pas en compte...

eric
0