Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2011, 12h45   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 2
Points : 2
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
Type de fichier : 7z Test2.7z (69 octets, 0 affichages)
seboboch est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h57   #2
Invité de passage
 
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 2
Points : 2
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 :
For Each Cell In Range("A1:A10")
en:
Code :
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
Type de fichier : 7z Test2.7z (24,2 Ko, 1 affichages)
seboboch est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 16h12   #3
Invité de passage
 
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 2
Points : 2
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 :
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 :
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??
seboboch est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h03.


 
 
 
 
Partenaires

Hébergement Web