Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 liaison graphique et VBA

fabrice76800

XLDnaute Nouveau
Bonjour à tous,

J'avais crée un petit prog sous excel 2003 qui fonctionnait bien sous 2016 jusqu'a une maj de office 2016 et après conversion de mon prog. N'arrivant pas a le remodeler je l'ai refait sous excel 2016 mais avec la même base VBA.
En fait, le soucis est que malgré mes recherches je n'arrive pas a creer une chart et faire toutes les liaisons.

Mon classeur se compose de : 1 feuille calcul (NetVde) 1 feuille graphique (Courbes) qui trace les points de la feuille groupes et 1 feuille (Groupes)
En fonction du point de fonctionnement de la feuille 1 qui s'affiche sur la feuille graphique, avec un bouton Qv moins ou plus, je deplace le point de fonctionnement sur la courbe qui est la plus proche. Je la sélectionne via le bouton et doit apparaitre sur la feuille 1. Le hic est là, rien n'apparait et me renvoi des des erreurs VBA, Range inexistante.....
Si vous avez des idées, je suis preneur.

Bien à vous.
Fabrice
 

Pièces jointes

  • NetVde_v1_17.xlsm
    114.5 KB · Affichages: 33

fabrice76800

XLDnaute Nouveau
Bonjour,

oui, désolé pour la dureté du code, je ne suis qu'un petit amateur dans ce domaine.
erreur code 400, erreur d’exécution (Dimension spécifié non valide pour le type de graphique en cours) qui me renvoi à ligne macro Sub (Autogroup) à la fin Charts(Courbes).activate
J'ai aussi, Variable ou objet de bloc With non définie et erreur d'execution 9.

Beaucoup d'erreurs que je n'arrive pas a résoudre.

Cordialement.
 

Staple1600

XLDnaute Barbatruc
Re

Si tu es un amateur un VBA, qui a écrit le code VBA de ta PJ?

Si tu n'arrives pas à résoudre, hop, tu prends le TEOR, direction L'ours Noir
Ensuite un petit tour de King ou de Sweety.

Une fois, tes neurones aérés, tu reviens devant ton clavier et tu testes par exemple cette modif
(partout ou cela se répète dans ton code)
Tu remplaces
Charts("Courbes").Activate
par
Sheets("Courbes").Activate
 

fabrice76800

XLDnaute Nouveau
le code avait été écrit par un de mes collègues pour toutes les liaisons graphiques et moi pour toutes les formules mathématiques. Mais cela fait 10 ans.

Avec Sheets("Courbes").Activate sa fonctionne. Merci bien.

Par contre pour la feuille (courbes) quand je selectionne une courbe "x" et que j'active le bouton "selection", cela me met "erreur code 400".

J'ai regardé sur internet mais je ne suis arrivé à pas grand chose...
 

Staple1600

XLDnaute Barbatruc
Re

C'est parce que ton profil indique: Habite à ROUEN
(et que jadis je fus rouennais) que je me suis permis ce petit hors-sujet

Sinon de quel bouton Sélection tu parles?
Je n'ai vu qu'un bouton Pré-sélection! sur la feuille NetVde
 

Staple1600

XLDnaute Barbatruc
Re

J'ai déplacé cette macro dans un module standard
(au départ, elle est dans le code de la feuille Courbes)
et j'ai donc réaffecté cette macro au bouton sélection
et je n'ai plus le Message d'erreur 400
VB:
Sub SelGrpoup()
  Dim nm$, i
    If TypeName(Selection) = "Series" Then
       nm = Selection.Name
     Range("GrpFiltre").AutoFilter Field:=8, Criteria1:=nm
       For i = 1 To Range("NomGrp").Rows.Count
            If Range("NomGrp").Cells(i) = nm Then
                Range("SelGrp") = i
                Exit Sub
            End If
        Next
    End If
End Sub
 

fabrice76800

XLDnaute Nouveau
Impeccable. Merci beaucoup.

Ça fonctionne. C'est bizarre que dans la feuille courbe ça bug alors que là non.

Et as tu une explication pour Variable ou objet de bloc With non définie pour les boutons de la feuille graphique an bas a droite. A tout zazard...
 

Staple1600

XLDnaute Barbatruc
Re

Là aussi, j'ai mis ces trois macros dans le module standard.
(et j'ai modifié un peu l'écriture)
Il faut aussi réattribuer les macros aux boutons
VB:
Sub QvAuto()
Dim ch As ChartObject
Set ch = Sheets("Courbes").ChartObjects(1)
ch.Chart.Axes(xlCategory).MaximumScaleIsAuto = True
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub QvPlus()
Dim ch As ChartObject
Set ch = Sheets("Courbes").ChartObjects(1)
ch.Chart.Axes(xlCategory).MaximumScale = ch.Chart.Axes(xlCategory).MaximumScale + 1000
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Sub Qvmoins()
Dim ch As ChartObject
Set ch = Sheets("Courbes").ChartObjects(1)
ch.Chart.Axes(xlCategory).MaximumScale = ch.Chart.Axes(xlCategory).MaximumScale - 1000
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
 

Discussions similaires

Réponses
3
Affichages
306
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…