Mettre plusieurs graphiques dans plusieurs cases

Bonjour j'ai plusieurs graphiques et je voudrais les mettre dans une case chacun et que tous mes graphiques se retrouvent dans une ligne mais seulement le premier se met dans la cinquième case (je ne comprends pas pourquoi) et les autres se mettent un peut partout sur le feuille et sont les un sur les autres pouvez vous m'aider ?

voici mon code:

Sub position()
'position du graph
Dim xRg As Range
Dim xChart As ChartObject
Dim i As Integer

Set xRg = Range("D" & i + 1)
Set xChart = ActiveSheet.ChartObjects(1)

With xChart
.Top = xRg(1).Top
.Left = xRg(1).Left
.Width = xRg.Width
.Height = xRg.Height
End With
End Sub

Merci d'avance

3classeur3.xlsm (41.28 Ko)

Re-bonjour,

Inutile de multiplier des demandes identiques (https://forum.excel-pratique.com/viewtopic.php?f=2&t=126212)...

Il suffit d'être clair pour obtenir une réponse !

Une piste :

Sub PositionnerGraph()

Dim i As Integer

With Sheets("Feuil1")
    For i = 1 To .ChartObjects.Count
        .ChartObjects(i).Top = .Cells(1, i).Top
        .ChartObjects(i).Left = .Cells(1, i).Left
        .ChartObjects(i).Width = .Cells(1, i).Width
        .ChartObjects(i).Height = .Cells(1, i).Height
    Next i
End With

End Sub

Merci beaucoup pour votre réponse oui j'ai essayé d'être un peu plus clair cette fois ci même si ce n'est pas si simple d'expliquer ca et savoir se faire comprendre. Les graphes que j'obtiens sont sur la même ligne or j'aimerais les avoir sur une même colonne je devrais modifier quelle partie du programme pour ca ?

Merci d'avance

Merci beaucoup pour votre réponse oui j'ai essayé d'être un peu plus clair cette fois ci même si ce n'est pas si simple d'expliquer ca et savoir se faire comprendre. Les graphes que j'obtiens sont sur la même ligne or j'aimerais les avoir sur une même colonne je devrais modifier quelle partie du programme pour ca ?

Merci d'avance

Dans ta demande initiale c'était bien indiqué "ligne"... Il suffit d'intervertir 1 et i dans les instructions .Cells(1, i), le 1er numéro fait référence à la ligne, le second à la colonne.

Et dernière petit détail je les voudrais dans la dernière colonne vide ici D si tu peux m'aider après ca mon problème serait enfin résolu !

Merci d'avance

.Cells(1, i), le 1er numéro fait référence à la ligne, le second à la colonne.

Merci beaucoup pour votre aide ca fonctionne ! Je vais clore le sujet.

Juste une autre question je dois démarrer de la seconde ligne et non de la première car il y aura les noms de la légende je dois modifier quel partie ou dois-je rajouter quelque chose en plus ?

Merci d'avance

Bonjour.

Même citation !

.Cells(1, i), le 1er numéro fait référence à la ligne, le second à la colonne.

Merci mais quand je mets i est egal à 2 alors j'ai un graphiques en 1;D1 qui se ballade sur ma feuille

With Sheets("Feuil1")
    For i = 2 To .ChartObjects.Count
        .ChartObjects(i).Top = .Cells(i, 4).Top
        .ChartObjects(i).Left = .Cells(i, 4).Left
        .ChartObjects(i).Width = .Cells(i, 4).Width
        .ChartObjects(i).Height = .Cells(i, 4).Height
    Next i
End With

Merci d'avance

Merci mais quand je mets i est egal à 2 alors j'ai un graphiques en 1;D1 qui se ballade sur ma feuille

With Sheets("Feuil1")
    For i = 2 To .ChartObjects.Count
        .ChartObjects(i).Top = .Cells(i, 4).Top
        .ChartObjects(i).Left = .Cells(i, 4).Left
        .ChartObjects(i).Width = .Cells(i, 4).Width
        .ChartObjects(i).Height = .Cells(i, 4).Height
    Next i
End With

Merci d'avance

Dans ton exemple, si tu mets i qui démarre à 2, tu ne touche pas au premier graphique de ta feuille. Donc i démarre bien à 1, par contre dans Cells(Ligne, Colonne), tu peux écrire i + 1.

Ce qui donne :

With Sheets("Feuil1")
    For i = 1 To .ChartObjects.Count
        .ChartObjects(i).Top = .Cells(i + 1, 4).Top
        .ChartObjects(i).Left = .Cells(i + 1, 4).Left
        .ChartObjects(i).Width = .Cells(i + 1, 4).Width
        .ChartObjects(i).Height = .Cells(i + 1, 4).Height
    Next i
End With

En faisant cela je démarre à la ligne 3;D3 toujours avec le graphique de la première qui m’embête fortement, si tu veux je peux te montrer en joignant une capture d'écran.

Merci d'avance

En faisant cela je démarre à la ligne 3;D3 toujours avec le graphique de la première qui m’embête fortement, si tu veux je peux te montrer en joignant une capture d'écran.

Merci d'avance

Une capture d'écran ne me renseigne pas beaucoup, un fichier "manipulable" me permettant de reproduire et comprendre l'erreur est nettement plus utile...

Voici le fichier excel, j'ai par ailleurs modifié i en mettant et la ce commence bien à la ligne de mais avec un graph % qui sont mes titres.

2classeur5.xlsm (39.56 Ko)

Voici le fichier excel, j'ai par ailleurs modifié i en mettant et la ce commence bien à la ligne de mais avec un graph % qui sont mes titres.

Euh... En français ça veut dire ?

Je précise également qu'il n'y a aucun graphique dans ton fichier...

Pourtant en ouvrant mon fichier j'ai bien mes graphs ils commencent à la cellule D4 par un graph "%" qui est vide, ah oui j'ai oublié un mot dans ma phrase mais je me suis rendu compte que ce je disais est faux.

Le programme en lui même est plus complexe que cela je dois créer un graphique lui affecter une case et le convertir en PDF avec pour nom ce qui sera dans ma colonne A je vais vous joindre le programme en entier pour peut être mieux comprendre mon problème ?

Il faudra que vous changiez le chemin aussi pour pouvoir l’exécuter.

Voici le fichier

Le programme en lui même est plus complexe que cela je dois créer un graphique lui affecter une case et le convertir en PDF avec pour nom ce qui sera dans ma colonne A je vais vous joindre le programme en entier pour peut être mieux comprendre mon problème ?

Il faudra que vous changiez le chemin aussi pour pouvoir l’exécuter.

Voici le fichier

Comme quoi on perd moins de temps avec les bonnes informations !

Pour résumer, le sujet actuel est résolu, on a bien un graphique par cellule, en colonne et qui commence à la ligne 2.

Maintenant, nouveau problème, tu ne créés pas que des graphiques valides, puisque le premier n'a pas de sens.

Voilà une version révisée (et surtout épurée) d'après ce que j'ai compris :

Sub tuto()

On Error Resume Next

Dim DerLig As Long, Lig As Long, Grph As ChartObject, Chemin As String

Chemin = "C:\Users\nomutilisateur\Downloads\Nouveau dossier\"
With Sheets(1)
    'Suppression anciens gaphs
    For Each Grph In .ChartObjects
        Grph.Delete
    Next Grph
    DerLig = .Cells(Rows.Count, 1).End(xlUp).Row 'trouver derniere ligne du tableau à partir  de la colonne 1
    For Lig = 2 To DerLig 'boucle sur les lignes - de la premiere et la derniere
        'création du graphique
        .Shapes.AddChart2(251, xlDoughnut).Select
        ActiveChart.SetSourceData Source:=Range("A" & Lig & ":C" & Lig)
        ActiveChart.Legend.Select
        'Positionnement
        ActiveChart.Top = .Cells(Lig, 4).Top
        ActiveChart.Left = .Cells(Lig, 4).Left
        ActiveChart.Width = .Cells(Lig, 4).Width
        ActiveChart.Height = .Cells(Lig, 4).Height
        'Export PDF
        .Cells(Lig, 4).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & .Cells(Lig, 1) & ".pdf"
    Next Lig
End With

End Sub

Tu t'es bien compliqué à utiliser plusieurs syntaxes, avec beaucoup de redondances...

Le soucis de ton premier graphique venait du fait que tu créais un graphique dès la première ligne, alors qu'il s'agit d'une ligne d'en-tête. En commençant à partir de la ligne 2, tu ne devrais pas avoir de soucis.

Aussi, le nom de ton fichier à exporter risque de poser problème en cas de doublons ou si le nom existe déjà...

Ok merci beaucoup de ton aide et du temps consacré à m'aider, dans le programme que tu m'as donné j'ai une erreur en l’exécutant.

2classeur5.xlsm (22.46 Ko)
Rechercher des sujets similaires à "mettre graphiques cases"