graphique rempli avec ComboBox

rirutol

XLDnaute Nouveau
Salut,

Si j'ai 2 combobox qui sont les dates de début et de fin d'un graphique remplie par la colonne A

Je voudrais savoir s'il est possible de renvoyer la colonne B (à la ligne correspondante) comme axe des X de mon graphique??

rirutol
 

rirutol

XLDnaute Nouveau
Re : graphique rempli avec ComboBox

Salut,

Voila un fichier joint
Je voudrais tracer Valeurs = f(référence) et choisir la période avec les dates

rirutol
 

Pièces jointes

  • essai.xls
    47 KB · Affichages: 83
  • essai.xls
    47 KB · Affichages: 82
  • essai.xls
    47 KB · Affichages: 83

job75

XLDnaute Barbatruc
Re : graphique rempli avec ComboBox

Re,

Déterminer la plage de données voulue en feuille Calculs ne pose pas de problème.

Par contre pour :

tracer Valeurs = f(référence)

vous avez dû remarquer que les références peuvent être quelconques.

Votre graphique (nuage de points) va avoir une drôle de touche :confused:

Vous êtes sûr de ce que vous voulez ? Alors donnez-nous un exemple avec la série que vous aurez définie...

A+
 

job75

XLDnaute Barbatruc
Re : graphique rempli avec ComboBox

Re,

Pour illustrer ce que je viens de dire, voyez le fichier joint.

Les macros dans le code de Feuil1 :

Code:
Private Sub ComboBox1_Change()
Trace
End Sub

Private Sub ComboBox2_Change()
Trace
End Sub

Sub Trace()
Dim d1#, d2#, plage As Range
d1 = CDate(ComboBox1.Value)
d2 = CDate(ComboBox2.Value)
With Sheets("Calculs")
  Set plage = .[C3:D3].Offset(Application.Match(d1, .[B4:B65536])) _
    .Resize(1 + Application.Match(d2, .[B4:B65536]) - Application.Match(d1, .[B4:B65536]))
End With
Application.ScreenUpdating = False
With Sheets("Feuil1").ChartObjects(1).Chart.SeriesCollection(1)
  .XValues = plage.Columns(1)
  .Values = plage.Columns(2)
End With
End Sub
A+
 

Pièces jointes

  • Pagaille(1).xls
    51 KB · Affichages: 79

job75

XLDnaute Barbatruc
Re : graphique rempli avec ComboBox

Re,

Pour éviter un bug si ComboBox1 > Combobox2, écrire :

Code:
d1 = Application.Min(CDate(ComboBox1), CDate(ComboBox2))
d2 = Application.Max(CDate(ComboBox1), CDate(ComboBox2))
Fichier (2).

Edit : ajouté un contrôle d'erreur en cas de modification manuelle des ComboBox.

A+
 

Pièces jointes

  • Pagaille(2).xls
    48.5 KB · Affichages: 62
Dernière édition:

rirutol

XLDnaute Nouveau
Re : graphique rempli avec ComboBox

Bonjour,

Non c'est ma faute, je me suis trompé dans les valeurs insérées dans le fichier (celles que j'ai mises ne veulent rien dire)

Sinon merci c'est exactement ce que je voulais

J'ai simplement un petit problème : si je veux ajouter une nouvelle série de valeurs dans "Calculs" et la tracer, sur le même principe, dans une autre feuille, quelle partie du code dois-je modifier???

Merci

rirutol
 

rirutol

XLDnaute Nouveau
Re : graphique rempli avec ComboBox

Ca y est, c'est bon je viens de trouver
Il suffit d'étendre la séléction de la plage :

Set plage = [C3:E3].Offset(Application.Match(d1, .[B4:B65536])) _
.Resize(1 + Application.Match(d2, .[B4:B65536]) - Application.Match(d1, .[B4:B65536]))


et de choisir la colonne correspondante pour les ordonnées :

.Values = plage.Columns(3)

Le fichier joint pour ceux que ça intéresse
Encore merci job 75, ça faisait longtemps que je me cassais les dents la-dessus
 

Pièces jointes

  • essai2.xls
    69 KB · Affichages: 56
  • essai2.xls
    69 KB · Affichages: 55
  • essai2.xls
    69 KB · Affichages: 50

job75

XLDnaute Barbatruc
Re : graphique rempli avec ComboBox

Bonjour rirutol,

Excellente votre adaptation :)

On peut paramétrer la macro Trace - celle de la version (2) est meilleure - et la mettre dans Module1 :

Code:
Sub Trace(col As Byte)
Dim d1#, d2#, plage As Range
On Error Resume Next
d1 = Application.Min(CDate(ActiveSheet.ComboBox1), CDate(ActiveSheet.ComboBox2))
d2 = Application.Max(CDate(ActiveSheet.ComboBox1), CDate(ActiveSheet.ComboBox2))
With Sheets("Calculs")
  Set plage = .[C3:F3].Offset(Application.Match(d1, .[B4:B65536])) _
    .Resize(1 + Application.Match(d2, .[B4:B65536]) - Application.Match(d1, .[B4:B65536]))
End With
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
  If Err Then
    .XValues = 0
    .Values = 0
  Else
    .XValues = plage.Columns(1)
    .Values = plage.Columns(col)
  End If
End With
End Sub
Nota : j'ai simplifié aussi la macro Workbook_Open.

A+
 

Pièces jointes

  • essai2(1).xls
    65.5 KB · Affichages: 74
  • essai2(1).xls
    65.5 KB · Affichages: 69
  • essai2(1).xls
    65.5 KB · Affichages: 67

Discussions similaires

Réponses
6
Affichages
358

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson