[Résolu] Déclarer une plage de cellule vide avant remplissage

Jenovae

XLDnaute Nouveau
Bonjour,

Je souhaite tracer dynamiquement un graphique. Sur une UserForm, une liste de données est "cochable" et "décochable" via l'utilisation de CheckBox. Lorsque l'utilisateur appuie sur le bouton "Tracer le graphe", la macro vient lire l'UserForm d'option de graphe, et pour chaque case cochée ajoute la plage de données sources à la plage générale avant de créer le graphique avec la plage générale.

Comment dois-je faire pour déclarer ma plage générale comme étant vide au début du remplissage?
J'ai essayé toutes sortes de choses telles que :

Set Plage = ""
Set Plage = Range()
Set Plage = []
Set Plage = Null
Set Plage = Empty
Set Plage as Null
Set Plage as Empty

Il ne me manque que cette petite information pour laquelle j'ai beau chercher sur le net en tapant "plage vide", "déclarer plage vide" etc.... Rien à faire.


Ci dessous le petit bout de code que j'utilise :
Code:
Dim NomOperation, NomGraphique As String
Dim Ligne As Long
Dim Plage, XPlage As Range
Dim Ctrl As Control

Application.ScreenUpdating = False

Set Plage =  ?????
Set XPlage = ?????

Sheets("PageDonnees").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("$A$13:$B$13")
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Delete
For Each Ctrl In OptionsClosCouvert.Controls
     Ligne = 1
     If (TypeOf Ctrl Is MSForms.CheckBox) And Ctrl.Value Then
        While Not Range("A" & Ligne).Value = Ctrl.Caption
            Ligne = Ligne + 1
        Wend
        Set Plage = Union(Plage, Cells(Ligne, Colonne))
        Set XPlage = Union(XPlage, Cells(Ligne, 1))
    End If
Next Ctrl
ActiveChart.SeriesCollection.Add Source:=Plage
ActiveChart.SeriesCollection(1).Name = Cells(2, Colonne).Value
ActiveChart.SeriesCollection(1).XValues = XPlage
ActiveChart.ChartType = xlRadar

Je vous remercie d'avance pour votre aide, en attendant je vais essayer d'optimiser tout ça pour que ça effectue moins de calculs et soit plus rapide.

Bonne journée !
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Déclarer une plage de cellule vide avant remplissage

Re,

A noter également, en l'état seule la dernière variable est déclarée en "range", la première est de type "variant...

Code:
Dim Plage, XPlage As Range

il faut déclarer ainsi :
Code:
Dim Plage As Range, XPlage As Range
 

Jenovae

XLDnaute Nouveau
Re : Déclarer une plage de cellule vide avant remplissage

Bonjour Pierrot et merci de ta réponse rapide. C'était vraiment bête je sais....

J'avoue qu'on m'avait dit qu'il était identique de déclarer
Code:
Dim Plage, XPlage as Range
que
Code:
Dim Plage as Range, XPlage as Range

Merci de l'info, je vais du coup remodifier toutes mes déclarations.
Bonne journée !


PS : Je me posais la question, pour répondre aussi rapidemment, certains d'entre vous travaillent "à plein temps" sur ce forum?
 

Jenovae

XLDnaute Nouveau
Re : Déclarer une plage de cellule vide avant remplissage

Re,

Oui je me doutais bien qu'il n'y avait pas de rémunération derrière tout ça. :)
J'entendais par ma question, des personnes passionnées qui s'en occupent à plein temps (retraités, en recherche de travail, en parallèle de leur travail même....).

Pour en revenir à ma question, la procédure n'arrive pas bien à gérer ce bout de code du coup :
Code:
Set Plage = Union(Plage, Cells(Ligne, Colonne))
Set XPlage = Union(XPlage, Cells(Ligne, 1))
J'obtiens un message "Argument ou appel de procédure incorrect". J'en déduis qu'il n'aime faire une union lorsqu'un argument est une plage vide.

J'ai tenté de remplacer par :
Code:
If IsEmpty(Plage) Then Set Plage = Cells(Ligne, Colonne) Else Set Plage = Union(Plage, Cells(Ligne, Colonne))
If IsEmpty(XPlage) Then Set XPlage = Cells(Ligne, 1) Else Set XPlage = Union(XPlage, Cells(Ligne, 1))
'en remplaçant "IsEmpty" par "Is Null" ou encore "Plage = Nothing" sans succès

Merci d'avance pour toute aide!
 

Pierrot93

XLDnaute Barbatruc
Re : Déclarer une plage de cellule vide avant remplissage

Re,

il faut tester ainsi :
Code:
If Not plage Is Nothing Then Set plage = Union(plage, Cells(Ligne, Colonne))

ou comme ceci :
Code:
If Not plage Is Nothing Then
    Set plage = Union(plage, Cells(Ligne, Colonne))
Else
    Set plage = Cells(Ligne, Colonne)
End If

tout dépend de la suite de ton code...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Déclarer une plage de cellule vide avant remplissage

Bonjour le fil, bonjour le forum,

Comme te l'avait dit Pierrot dans sa première réponse... Nothing !
Essaie comme ça :
Code:
If Plage Is Nothing Then
    Set Plage = Cells(Ligne, Colonne)
Else
    Set Plage = Application.Union(Plage, Cells(Ligne, Colonne))
End If

[Édition]
Bonjour Pierrot on s'est croisé...
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
196
Réponses
0
Affichages
176

Statistiques des forums

Discussions
312 492
Messages
2 088 930
Membres
103 984
dernier inscrit
maliko67