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 :

Sélection cellules non vides pour création d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Sélection cellules non vides pour création d'un graphique
    Bonjour,

    Je commence à découvrir VBA et les macros sous Excel et je m'en sors difficilement.
    J'ai réussi à créer une macro pour importer un fichier TXT dans un feuille en ne sélectionnant que les données que je voulais.
    Maintenant la deuxième étape est de créer un graphique à partir de ces données importées. Cependant il existe des trous et le nombre de données n'est jamais le même. Je n'arrive donc pas à ignorer les cellules vides lors de la sélection et à sélectionner jusqu'à la dernière ligne non vide.

    J'espère que j'ai été assez clair.

    Je vous joins un fichier test de création du graphique (sans sélection des cellules non vides).
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    En cherchant sur le forum j'ai trouvé un début de réponse:

    http://www.developpez.net/forums/d62...non-contigues/

    Cependant, comme j'ai un nombre non constant de lignes, je suis obligé de voir grand pour ne pas en oublier. Je change donc les valeurs de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cell In Range("A1:A10")
    en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cell In Range("A24:A2000")
    Problème: Erreur d'exécution 6, dépassement de capacité.
    J'ai essayé avec une plus petite plage par exemple 600 mais toujours le même problème.
    Je ne pense donc pas que ce soit une bonne solution.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    J'avance un peu. J'ai encore trouvé sur le forum un début de solution en sélectionnant les cellules vides, puis en inversant la sélection.
    Cependant cela ne marche encore pas, mais je sens que j'approche du but.

    Voila la source du problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        'Sélection des cellules non vides colonne A pour les abscisses
        With ActiveChart
            .SeriesCollection(1).XValues = InverseSelection(Range("A24:A2000"), Range("A24:A2000").SpecialCells(xlCellTypeBlanks)).Select  'Abscisses
        End With
     
        'Sélection des cellules non vides colonne B pour les ordonnées
        With ActiveChart
            .SeriesCollection(1).Values = InverseSelection(Range("B24:B2000"), Range("B24:B2000").SpecialCells(xlCellTypeBlanks)).Select  'Ordonnées
        End With
    et voila la public function trouvé sur le forum (merci à caféine):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Function InverseSelection(ByVal rngFull As Range, ByVal rngSel As Range) As Range
     
    ' permet inverser une selection
    Dim rng As Range
    Dim cell As Range
     
    For Each cell In rngFull.Cells
        If Intersect(rngSel, cell) Is Nothing Then
            If rng Is Nothing Then
                Set rng = cell
            Else
                Set rng = Union(rng, cell)
            End If
        End If
    Next cell
    Set InverseSelection = rng
     
    Set cell = Nothing
    Set rng = Nothing
     
    End Function
    J'ai l'erreur suivante:
    Erreur d'exécution 91: Variable objet ou variable de bloc With non définie.

    Une idée??

Discussions similaires

  1. Réponses: 17
    Dernier message: 27/02/2014, 21h29
  2. [XL-2010] Boucle pour modifier les cellules non vides
    Par scayhes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2013, 12h23
  3. [XL-2003] Création automatique de Checkbox si cellule non vide
    Par titou87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2012, 19h08
  4. [XL-2007] comment faire pour que mon userform m'affiche la dernière cellule non vide
    Par simoh1313 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/04/2012, 10h39
  5. [XL-2002] Concatener des cellules non vides pour faire liste d'envoi mail
    Par tchoutchou69 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/11/2011, 10h38

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