[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 job75,

Oui et je vous en remercie ! Je crois que l'on s'est mal compris.
Je les ai utilisé et j'ai repris le code que vous avez écrit mais comme je le dis dans mon message précédent : sans succès.

Je ne comprends pas ce qui rentre en conflit avec mon code qui fonctionne en l'état (cf. post précédent).
Dès que j'intègre vos conseils de code, ça plante.
 
Re : Plage de données aux celulles non concomitantes

A force de tâtonnements,
j'ai finalement réussi à faire à peu près ce que je souhaitais.

Sûrement pas optimisé mais voici le code :
Code:
Sub GraphiqueEvolution()

Dim ShCfg As Worksheet, ShCls As Worksheet, File As Workbook, cel As Range, tablo, d&, X(), Y(), j&, ZZ 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 = xlXYScatterLinesNoMarkers


    For i = 0 To (ShCfg.Cells(4, 2) - 1)
    
        tablo = Range(Cells(1, 7 + (i * 2)).Address & ":" & Cells(22, 7 + (i * 2)).Address)
       
        d = Int(UBound(tablo) / 2)
        ReDim X(1 To d)
        For j = 1 To d
          X(j) = tablo((j * 2), 1)
        Next
        
        With myChtObj.Chart.SeriesCollection.NewSeries
        .Name = ShCfg.Cells(5 + i, 2)
        .Values = X
        
        End With

   Next

End Sub
 
Re : [Résolu] Plage de données aux celulles non concomitantes

Bonsoir à tous,

J'essaie de relancer ce fil, mais j'ai des problèmes lors de la rédaction de mon message, visiblement le retour à la ligne ne fonctionne plus.
Je vais faire bref.
Au post #9, la variable tablo est définie comme ceci :
tablo = Range("A2:B" & [A65536].End(xlUp).Row)
Elle prend en compte 2 plages contiguës A et B .
Comment modifier le code si je dois m'appuyer sur la colonne A et J par exemple, je ne trouve pas la solution.
Pouvez-vous m'aider ?

Cibleo
 
Dernière édition:
Re : [Résolu] Plage de données aux celulles non concomitantes

Bonjour VDAVID
Bonjour à tous,

Pour redéfinir la variable tablo avec 2 plages non contiguës (ici A et J) à partir de la ligne 2, j'ai procédé comme ceci :
VB:
Dim tablo()
'tablo = Range("A2:B" & [A65536].End(xlUp).Row)

NLig = [A65536].End(xlUp).Row - 1
ReDim tablo(1 To NLig, 1 To 2)
For j = 1 To NLig
  tablo(j, 1) = Range("A" & j + 1)
  tablo(j, 2) = Range("J" & j + 1)
Next j
VDAVID, ta solution ne fonctionne pas
Je pensais que l'on pouvait faire plus simple.

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

Bonjour cibleo, VDAVID,

Pour travailler sur les colonnes A et J on peut modifier la macro du post #9 comme suit :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim p&, tablo, d&, X(), Y(), i&, n&
If Intersect(Target, [A:A,J:J,D2]) Is Nothing Then Exit Sub
p = [D2] '1/p lignes prises en compte
tablo = Range("A2:J" & [A65536].End(xlUp).Row)
If p Then d = Int((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, 10)
Next
ThisWorkbook.Names.Add "X", X 'nom défini
ThisWorkbook.Names.Add "Y", Y 'nom défini
End Sub
Pas compliqué : il suffit d'utiliser les colonnes 1 et 10 de tablo...

Fichier (4 bis).

A+
 

Pièces jointes

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

Bonsoir le forum,
Bonsoir Job75 et merci pour ce complément.

Dans le fichier joint, j'ai modifié quelques points :
Je suis passé par un graphique en courbe, placé une liste de validation en L2 qui me permet d'afficher la valeur minimum de l'axe des abcisses
L3 affiche le numéro de la ligne de la valeur recherchée.
J'ai donc modifié ceci :
lig = [L3].Value
'tablo = Range("A2:J" & [A65536].End(xlUp).Row)
tablo = Range("A" & lig & ":J" & [A65536].End(xlUp).Row)
Dans la colonne A et J, j'aimerais maintenant modifier la MFC pour prendre en compte la ligne de départ fixée par la valeur de L3 pour ne plus partir de A2 et J2.
Est-ce possible par formule sinon en VBA !

Pouvez-vous m'aider ?
Cibleo

Edit : pour faire évoluer le graphique, saisir la valeur de départ dans L2 et choisir l'intervalle dans D2.
 

Pièces jointes

Dernière édition:
Re : [Résolu] Plage de données aux celulles non concomitantes

Bonsoir cibleo,

Voir le fichier joint.

Formule de la MFC en A1 :

Code:
=ET(A1<>"";LIGNE()>=$L$3;MOD(LIGNE()-$L$3;$D$2)=0)
Dans la macro ne pas oublier L2 dans la plage contrôlée.

Edit : la variable lig était bien inutile.

A+
 

Pièces jointes

Dernière édition:
- 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