[Résolu] Plage de données aux celulles non concomitantes

  • Initiateur de la discussion Initiateur de la discussion Zephyyyr
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Zephyyyr

XLDnaute Nouveau
Bonjour à tous,

Pour réaliser un graphique je voudrais lui injecter une plage de données aux celulles non concomitantes.
Plus exactement une plage de données où le graphique ne prendrait en compte qu'une cellule sur 2.

Est-ce possible ?
J'ai tenté des choses avec MOD mais sans succès...
 
Dernière édition:
Re : Plage de données aux celulles non concomitantes

Bonjour Zephyyyr,
Si t'as plage de cellule n'est pas conséquente, tu peux , lors de sa sélection, appuyez sur ctrl puis activer toutes les cellules voulues une par une. Le graphique ne prendra alors en compte que ces valeurs ...
 
Re : Plage de données aux celulles non concomitantes

Merci pour la réponse VDavid.
Cependant, la taille de ma plage de données est variable.
Je suis susceptible d'ajouter des données souvent et j'aimerais trouver un moyen qui ne me fasse pas resélectionner des cellules à chaque ajout...
 
Re : Plage de données aux celulles non concomitantes

Re,
Désolé pour le temps d'attente, j'ai essayé de faire ce que tu voulais!
Le fichier que je t'envoie reprends la plage de données que tu veux Colonne A en Jaune qui s'adapte en fonction des données et de sa taille et qui ne prends qu'une valeur sur deux.
La mise à jour se fait par bouton de commande !
En espérant avoir répondi à ta demande !
A+
 

Pièces jointes

Re : Plage de données aux celulles non concomitantes

Bonjour Zephyyyr, VDAVID,

Voyez le fichier joint avec cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Range, Y As Range, cel As Range
If Intersect(Target, [A:B]) Is Nothing Then Exit Sub
Set X = [A2]
Set Y = [B2]
For Each cel In Range("A2", [A65536].End(xlUp))
  If cel.Row Mod 2 = 0 Then
    Set X = Union(cel, X)
    Set Y = Union(cel.Offset(, 1), Y)
  End If
Next
X.Name = "X" 'nom défini
Y.Name = "Y" 'nom défini
End Sub
Important : testez sur un grand nombre de lignes, ce que je n'ai pas fait...

A+
 

Pièces jointes

Re : Plage de données aux celulles non concomitantes

Bonjour Job75,
Ta macro et ton fichier sont beaucoup plus simple !
Je suis impressionné par ta macro 🙂
Je ne savais pas que l'on pouvait intégrer des variables en tant que Range dès le départ !
Bonne fin de journée
 
Re : Plage de données aux celulles non concomitantes

Bonjour le fil, le forum,

Une autre solution avec des tableaux :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, d&, X(), Y(), i&
If Intersect(Target, [A:B]) Is Nothing Then Exit Sub
tablo = Range("A1:B" & [A65536].End(xlUp).Row)
d = Int(UBound(tablo) / 2)
ReDim X(1 To d)
ReDim Y(1 To d)
For i = 1 To d
  X(i) = tablo(2 * i, 1)
  Y(i) = tablo(2 * i, 2)
Next
ThisWorkbook.Names.Add "X", X 'nom défini
ThisWorkbook.Names.Add "Y", Y 'nom défini
End Sub
Elle est plus simple et surtout nettement plus rapide.

A+
 

Pièces jointes

Re : Plage de données aux celulles non concomitantes

Re,

Une généralisation, avec un cochage en colonne C :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, d&, X(), Y(), i&, n&
If Intersect(Target, [A:C]) Is Nothing Then Exit Sub
tablo = Range("A2:C" & [A65536].End(xlUp).Row)
d = Application.CountIf([C2:C65536], "x")
If d = 0 Then d = 1
ReDim X(1 To d)
ReDim Y(1 To d)
For i = 1 To UBound(tablo)
  If LCase(tablo(i, 3)) = "x" Then
    n = n + 1
    X(n) = tablo(i, 1)
    Y(n) = tablo(i, 2)
  End If
Next
ThisWorkbook.Names.Add "X", X 'nom défini
ThisWorkbook.Names.Add "Y", Y 'nom défini
End Sub
A+
 

Pièces jointes

Dernière édition:
Re : Plage de données aux celulles non concomitantes

Bonjour le forum,

Un autre type de généralisation :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p&, tablo d&, X(), Y(), i&, n&
If Intersect(Target, Union([A:B], [D2])) Is Nothing Then Exit Sub
p = [D2] '1/p lignes prises en compte
tablo = Range("A2:B" & [A65536].End(xlUp).Row)
If p Then d = Int(CDec((UBound(tablo) - 1) / p))
ReDim X(d)
ReDim Y(d)
For i = 0 To d
  n = 1 + p * i
  X(i) = tablo(n, 1)
  Y(i) = tablo(n, 2)
Next
ThisWorkbook.Names.Add "X", X 'nom défini
ThisWorkbook.Names.Add "Y", Y 'nom défini
End Sub
A+
 

Pièces jointes

Dernière édition:
Re : Plage de données aux celulles non concomitantes

Merci à tous pour ces réponses studieuses !

J'ai tenté d'adapter vos macros à la mienne mais sans succès.
Je connais trop mal le VB pour détecter mon erreur.

Voici ma fonction dénuée de tous mes tests :

Code:
Sub GraphiqueEvolution()

Dim ShCfg As Worksheet, ShCls As Worksheet, File As Workbook, cel As Range

Set File = ThisWorkbook
Set ShCfg = File.Worksheets("Configuration")
Set ShCls = File.Worksheets("Classement")

If ActiveSheet.ChartObjects.Count = 1 Then ActiveSheet.ChartObjects.Delete

Set myChtObj = ActiveSheet.ChartObjects.Add _
    (Left:=160, Width:=375, Top:=200, Height:=225)
    
myChtObj.Chart.ChartType = xlXYScatterLines


    For i = 0 To (ShCfg.Cells(4, 2) - 1)

        With myChtObj.Chart.SeriesCollection.NewSeries
        .Name = ShCfg.Cells(5 + i, 2)
                
        For Each cel In Range(Cells(2, 7 + (i * 2)), Cells(65536, 7 + (i * 2)).End(xlUp))
            If cel.Row Mod 2 = 0 Then
                ' Injection de données
            End If
        Next
        
        End With

    Next

End Sub

Quoi que je teste j'ai une erreur pour injecter les données...
Auriez-vous une piste ou au pire de la doc à ce sujet ?
 
Re : Plage de données aux celulles non concomitantes

Bonjour Zephyyyr,

Amusant, VDAVID et moi on s'est remué pour vous fournir un fichier 😡

Vous vous voulez continuer à travailler à l'aveuglette, alors continuez tout seul.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
752
Réponses
11
Affichages
528
Retour