IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

détecter la fin du tableur excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut détecter la fin du tableur excel
    Bonjour,

    avec vba je crée des graphiques à l'horizontale sur une feuille excel.

    comme j'ai des cas ou il y a beaucoup de graphiques je dépasse les 256 colonnes d'excel.

    Il faudrait que quand j'arrive a la fin du tableur je puisse reprendre la création des graphiques a la premiere colonne en dessous de ceux déja crées.

    J'ai une idée, mais peu être que ce n'est pas la bonne, tester a chaque création de graphique la colonne sur laquelle je me trouve avec la méthode Address, mais je vois pas trop comment faire...

    Avez-vous une idée svp ?

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Mettons que tes graphiques ne fasses pas plus de 500 points de largeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim LargMax As Double
    LargMax = [IV1].Left + [IV1].Width - 500
    'après création de chaque graphique, on teste
    If ActiveChart.Left > LargMax Then
        'on reprend à gauche
    End If

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut
    Bonjour Daniel.C et merci pour ta réponse.

    Mes graphiques ont une largeur variable, le width équivaut a la largeur du tableau de la source des données dont le nombre de colonne peut varier de 2 à 16.

    Et que veut dire IV1 dans ton code ?

    Merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Par défaut
    Bonjour Developpeur le forum
    en l'absence de Daniel
    IV1 signifie colonne IV ligne 1 donc dernière colonne dans un fichier .xls
    a+
    papou

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,
    @_developpeur_ :
    Si toutes tes colonnes ont la même largeur, remplace "500" par :
    La macro doit être exécutée après chaque création de graphique.

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, à lire également dans la FAQ

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    ....
    Si toutes tes colonnes ont la même largeur, remplace "500"..
    merci Daniel.C, malheureusement toutes les colonnes n'ont pas la même largeur, c'est variable.

    Citation Envoyé par Ormonth Voir le message
    Bonjour,

    ....
    ok merci je vais regarder comment utiliser BottomRightCell, même si je ne vois pas trop comment faire encore, je ne suis pas un expert VBA.

    je vous tiens au courant

    merci

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Citation Envoyé par _developpeur_ Voir le message
    Mes graphiques ont une largeur variable, le width équivaut a la largeur du tableau de la source des données dont le nombre de colonne peut varier de 2 à 16.
    avec les propriétés à suivre, donc la colonne extrême de ton dernier Graph, la largeur du prochain (citation ci-dessus) et ce qui a déjà été dit, tu devrais avoir ce qu'il faut

    Tu peux utiliser les propriétés :

    ChartObject.TopLeftCell, propriété
    Cette propriété renvoie un objet Range qui représente la cellule se trouvant sous le coin supérieur gauche de l'objet spécifié. Type de données en lecture seule.
    Référence du développeur Excel
    ChartObject.BottomRightCell, propriété
    Cette propriété renvoie un objet Range qui représente la cellule placée sous le coin inférieur droit de l'objet. Type de données en lecture seule.
    tu as un exemple d'utilisation ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each objShape In .Shapes '
         If Not Intersect(Range(objShape.TopLeftCell.Address & ":" & objShape.BottomRightCell.Address), .Range(tabvarPrintArea(I))) Is Nothing Then
             Exit Function 'si c'est le cas, on sort
         End If
    Next objShape
    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un tableur excel par C
    Par lamar dans le forum C
    Réponses: 3
    Dernier message: 15/11/2005, 09h00
  2. [BufferedInputStream] Détecter la fin du stream
    Par pmartin8 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 02/06/2005, 15h57
  3. [Servlet] Comment détecter la fin d'une session HTTP
    Par cocula dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/04/2005, 17h27
  4. [Réseau] détecter la fin de lecture dans un flux entrant
    Par al85 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 30/03/2005, 21h06
  5. [TMediaPlayer] Détecter la fin de lecture
    Par ysr1 dans le forum C++Builder
    Réponses: 1
    Dernier message: 30/09/2004, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo