Ajustement automatique de l'axe des abscisses

Bonjour,

Dans le fichier ci-joint, la courbe "Reponse" représente les valeurs entrées dans la colonne Mesures, par rapport à celles de la colonne Fréquence.

J'ai ajusté l'abscisse pour centrer la courbe sur la valeur Fc=400.

Si je change la valeur Fc en haut, mes fréquences changent. Est-il possible que l'axe des abscisses se centre automatiquement sur cette nouvelle valeur.

150courbe-reponse.xlsx (21.73 Ko)

J'espère être assez clair.

Cdt

JL

Bonjour,

Voilà, le graphique s'adapte automatiquement , la fréquence saisie sera toujours au centre du graphique.

Cdlt

Bonjour et merci, cela marche bien.

Pourriez-vous me dire comment vous avez fait afin que je puisse reproduire sur d'autres graphes.

merci

Cdt

Bonjour,

Si on le faisait manuellement, il faudrait faire un clic droit sur l'axe des abscisses, et forcer les valeurs mini et maxi des options de l''axe avec les valeurs mini et maxi du tableau.(image de droite), mais pour que cela s'adapte automatiquement aux changements des valeurs du tableau, on fait tout ça avec un petit bout de programme en VBA collé dans le module de la feuille du graphique. Le code recherche les valeurs mini et maxi du tableau et les applique au graphique.

Le fait que ce code soit écrit dans le module de la feuille, ici "Feuil2(Tx)", et que le nom de la macro est "Private Sub Worksheet_Change(ByVal Target As Range)" , ce dernier va réagir à chaque changement de valeur de la cellule E3 de cette feuille uniquement.

Faire ALT + F11 pour accéder au module VBA et visualiser le code.

clientdunet

Cdlt

Merci de votre réponse.

J'ai appliqué la méthode au second graphe dans la feuille et cela fonctionne.

Pourriez-vous me confirmer que ce que j'ai fait est correct ou bien y a-t'il une manière plus "élégante".

Cdt

Bonsoir,

Inutile de répéter le test sur la cellule, ceci tout simplement:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$3" Then
        ActiveSheet.ChartObjects("Graphique 2").Activate
        ActiveChart.Axes(xlCategory).MinimumScale = Application.WorksheetFunction.Min(Range("E9:E15"))
        ActiveChart.Axes(xlCategory).MaximumScale = Application.WorksheetFunction.Max(Range("E9:E15"))
        ActiveSheet.ChartObjects("Graphique 4").Activate
        ActiveChart.Axes(xlCategory).MinimumScale = Application.WorksheetFunction.Min(Range("E11:E13"))
        ActiveChart.Axes(xlCategory).MaximumScale = Application.WorksheetFunction.Max(Range("E11:E13"))
    End If
End Sub

Cdlt

Merci beaucoup pour votre aide.

Cdt

Bonsoir,

Je souhaiterai effectuer une modification à mon fichier.

La valeur "Fc" ainsi que "CL" sont maintenant sur la feuille "Valeurs".

Par une macro ("Envoi") je voudrais les envoyer sur la feuille "Tx" où se trouvent mes graphiques.

Mon souci est que dès que je met une valeur Fc dans la feuille "Valeurs", la feuille "Tx" apparaît. Il faut alors que je revienne sur la feuille "Valeurs" pour pouvoir exécuter la macro.

Pourriez-vous m'indiquer quelle modification je dois faire?

Cordialement

Bonjour,

Si vous voulez utiliser un bouton pour lancer la macro, alors il ne s'agit plus d'une macro évènementielle (qui réagit à une action telle la sélection d'une cellule ou du changement de son contenu), et dans ce cas il faut donner un nom à la macro et l'affecter au bouton. Cette macro doit être placée dans un module standard .

Ici la macro est dans le module standard "Module 1" et elle se nomme "Sub Afficher_Graphique".

Je pense que vous essayez de vous amuser un peu avec le VBA, car il est inutile de de copier les valeurs de la feuille "Valeurs" vers la feuille "Tx", une simple formule suffit., la macro faisant le reste pour l'actualisation des graphiques. Mais je vous laisse le code qui recopie les valeurs afin que vous puissiez voir comment on peut écrire tout cela.

Cdlt

Rechercher des sujets similaires à "ajustement automatique axe abscisses"