Graphique Excel en VBA

Résolu
Arsène Wenger -  
 Arsène Wenger -
Bonjour,

je suis sous Office 2007, je souhaiterai savoir comment changer la formule :

ActiveChart.SeriesCollection(6).Values = "='Bilan'!$B$6:$J$6"

en quelque chose que j'ai écrit (qui ne marche pas) et qui ressemblerait un peu à çà :

ActiveChart.SeriesCollection(6).Values = "='Bilan'!$B$6:$" & Range("A1").End(xlToRight).Column & "$6"

...Merci d'avance

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    col est la traduction en lettre de la dernière colonne utilisée ligne 1
    valable jusqu'à colonne Z
    Dim col As String * 1 
    col = Chr(Range("AA1").End(xlToLeft).Column + 64) 
    
    ActiveChart.SeriesCollection(6).Values = "='Bilan'!$B$6:$" & col & "$6"  
    

    Michel
    1
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Pour le fun si 2 lettres

      Function car_col(num As Integer) As String
      Dim serie As Byte
      Select Case num
          Case Is = 0
              car_col = "#########"
          Case Is < 27
              car_col = Chr(64 + num)
          Case Else
              serie = Int((num - 26) / 27) + 1
              car_col = Chr(64 + serie) & Chr(64 + num - 26 * serie)
      End Select
      
      End Function
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    - en tentant une fonction recursive, je me suis aperçu d'une erreur dans mon code, je l'ai corrigée dans le post 3
    - une fonction qui permet de convertir les numéros de colonnes en alpha pour excel ... 2099 au moins !

    Function cnumtocalpha(ByVal c As Long) As String  
      If c <= 26 Then  
        If c = 26 Then  
          cnumtocalpha = "Z"  
        Else  
          cnumtocalpha = Chr(64 + c)  
        End If  
      Else  
        If c Mod 26 = 0 Then  
          cnumtocalpha = cnumtocalpha(c \ 26 - 1) & cnumtocalpha(26)  
        Else  
          cnumtocalpha = cnumtocalpha(c \ 26) & cnumtocalpha(c Mod 26)  
        End If  
      End If  
    End Function
    1
    1. Arsène Wenger
       
      Les colonnes utilisées vont de B à J, mais je conserve quand même ce code ^^.
      Encore merci
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    et si la colonne dépasse Z une fonction qui transforme le n° de colonne en lettre(s)
    Function conum_coalpha(cn As Long) As String
    Dim pln As Long, dln As Long
    Dim cs As String
      If cn <= 26 Then
        conum_coalpha = Chr(64 + cn)
      Else
        dln = cn Mod 26
        pln = cn \ 26
        If dln = 0 Then
          dln = 26
          pln = pln - 1
        End If
        conum_coalpha = Chr(64 + pln) & Chr(64 + dln)
      End If
    End Function


    dim col as string 
    col = conum_coalpha(Range("A1").End(xlToRight).Column)

    puis finir comme comme michel_m

    bonne suite
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      > michel_m
      le temps d'aller chercher ma fonction, tu avais déjà tiré
      cordialement
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      la stéréo c'est mieux :-)
      0
    3. Arsène Wenger
       
      Franchement, merci beaucoup à tous les 2 !! j'espère que çà ne vous a pas pris trop de temps, en tout cas vous m'avez rendu un enorme service la ! Je vais pouvoir finaliser mon application.

      MERCI ^^
      0