Sélectionner plage variable pour graphique avec méthode Find
1 réponse
Wazzid
Bonjour,
Dans le but d'automatiser l'édition de rapport, j'ai commencé à utiliser les macros sur Excel et avec l'aide de différents forums je commence à comprendre un peu le VBA mais je suis confronté à un problème que je n'arrive pas à résoudre cette fois ci.
Alors mon souhait serait de pouvoir définir des plages de données grâce à la méthode Find.
Le but est de créer des graphes pour chaque phase 1,2 et 3 et donc il faudrait que je puisse sélectionner ma plage de données pour la graphe de la case A1 à la dernière case correspondant à ma phase 1 soit la colonne "Mph1".
Pareil pour le graphique phase 2 : la plage doit correspondre aux 4 premières colonnes de ma feuille + les colonnes correspondant à la phase 2 soit de " 1ph2" à "Mph2".
Je vous met ce le tout petit peu de code que j'ai et qui ne fonctionne pas
ainsi que mon fichier excel sur lequel je travail.
http://www.cjoint.com/c/GFoiTTT3Uky
Sub graphe()
'
' graphe Macro
'
'
Dim Lastcell1 As Range
Dim graph1 As Range
Dim cel As Range
' Je vois bien que ce code n'es pas bon du tout
' la méthode find doit renvoyer un Range mais
' j'ai l'impression qu'elle me renvoie "Mph1"
' et pas la case où elle se trouve
' d'ou les problemes ensuite car impossible d'aller prendre l'avant derniere case pour faire ensuite le graphe
Worksheets("resultat").Rows("1").Find(What:="Mph1").Select
Set cel = Selection
Set Lastcell1 = Range("cel" & Rows.Count).End(xlUp).Offset(-1, 0).Select
' Voici ce que l'enregistreur de macro me donne
' Et j'ai besoin d'utiliser la méthode Find car suivant le fichier, je n'ai pas forcement le même nombre de colonne
' Or Mph1 sera toujours ma derniere colonne correspondant à ma phase 1
Columns("A:Y").Select
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range("resultat!$A:$Y")
End Sub
Merci de votre aide, j'espère être assez clair n'hésitez pas à demander plus de précision.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
wazzid
Le mercredi 14 Juin 2017 à 10:51 par Wazzid :
Bonjour, Dans le but d'automatiser l'édition de rapport, j'ai commencé à utiliser les macros sur Excel et avec l'aide de différents forums je commence à comprendre un peu le VBA mais je suis confronté à un problème que je n'arrive pas à résoudre cette fois ci. Alors mon souhait serait de pouvoir définir des plages de données grâce à la méthode Find. Le but est de créer des graphes pour chaque phase 1,2 et 3 et donc il faudrait que je puisse sélectionner ma plage de données pour la graphe de la case A1 à la dernière case correspondant à ma phase 1 soit la colonne "Mph1". Pareil pour le graphique phase 2 : la plage doit correspondre aux 4 premières colonnes de ma feuille + les colonnes correspondant à la phase 2 soit de " 1ph2" à "Mph2". Je vous met ce le tout petit peu de code que j'ai et qui ne fonctionne pas ainsi que mon fichier excel sur lequel je travail. http://www.cjoint.com/c/GFoiTTT3Uky Sub graphe() ' ' graphe Macro ' ' Dim Lastcell1 As Range Dim graph1 As Range Dim cel As Range ' Je vois bien que ce code n'es pas bon du tout ' la méthode find doit renvoyer un Range mais ' j'ai l'impression qu'elle me renvoie "Mph1" ' et pas la case où elle se trouve ' d'ou les problemes ensuite car impossible d'aller prendre l'avant derniere case pour faire ensuite le graphe Worksheets("resultat").Rows("1").Find(What:="Mph1").Select Set cel = Selection Set Lastcell1 = Range("cel" & Rows.Count).End(xlUp).Offset(-1, 0).Select graph1 = Range("A1:lastcell1") ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("graph1") ' Voici ce que l'enregistreur de macro me donne ' Et j'ai besoin d'utiliser la méthode Find car suivant le fichier, je n'ai pas forcement le même nombre de colonne ' Or Mph1 sera toujours ma derniere colonne correspondant à ma phase 1 Columns("A:Y").Select ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("resultat!$A:$Y") End Sub Merci de votre aide, j'espère être assez clair n'hésitez pas à demander plus de précision.
Du nouveau, J'ai essayer d'avancer un petit peu mais je reste toujours boquer pour la même raison... Il ne me renvoie pas la cellule correspondante Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, AdresseTrouvee As String Worksheets("resultat").Select Set PlageDeRecherche = Rows("1") Set Trouve = PlageDeRecherche.Cells.Find(What:="Mph1", LookAt:=xlWhole) If Trouve Is Nothing Then Exit Sub Else AdresseTrouvee = Trouve.Address End If Dim cell As Range Dim Lastcell1 As Range Dim graph1 As Range ' Erreur range globale Lastcell1 = nothing et Selection = "Mph1" Range("AdresseTrouvee" & Rows.Count).End(xlUp).Offset(-1, 0).Select Lastcell1 = Selection Range("A1:Lastcell1").Select Set graph1 = Selection Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("graph1") End Sub
Le mercredi 14 Juin 2017 à 10:51 par Wazzid :
> Bonjour,
>
> Dans le but d'automatiser l'édition de rapport, j'ai commencé
> à utiliser les macros sur Excel et avec l'aide de différents
> forums je commence à comprendre un peu le VBA mais je suis
> confronté à un problème que je n'arrive pas à
> résoudre cette fois ci.
>
> Alors mon souhait serait de pouvoir définir des plages de données
> grâce à la méthode Find.
>
> Le but est de créer des graphes pour chaque phase 1,2 et 3 et donc il
> faudrait que je puisse sélectionner ma plage de données pour la
> graphe de la case A1 à la dernière case correspondant à ma
> phase 1 soit la colonne "Mph1".
>
> Pareil pour le graphique phase 2 : la plage doit correspondre aux 4
> premières colonnes de ma feuille + les colonnes correspondant à
> la phase 2 soit de " 1ph2" à "Mph2".
>
> Je vous met ce le tout petit peu de code que j'ai et qui ne fonctionne pas
> ainsi que mon fichier excel sur lequel je travail.
>
> http://www.cjoint.com/c/GFoiTTT3Uky
>
> Sub graphe()
> '
> ' graphe Macro
> '
>
> '
> Dim Lastcell1 As Range
> Dim graph1 As Range
> Dim cel As Range
>
>
>
> ' Je vois bien que ce code n'es pas bon du tout
> ' la méthode find doit renvoyer un Range mais
> ' j'ai l'impression qu'elle me renvoie "Mph1"
> ' et pas la case où elle se trouve
> ' d'ou les problemes ensuite car impossible d'aller prendre l'avant
> derniere case pour faire ensuite le graphe
>
>
>
> Worksheets("resultat").Rows("1").Find(What:="Mph1").Select
> Set cel = Selection
>
> Set Lastcell1 = Range("cel" &
> Rows.Count).End(xlUp).Offset(-1, 0).Select
>
> graph1 = Range("A1:lastcell1")
> ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
> ActiveChart.SetSourceData Source:=Range("graph1")
>
> ' Voici ce que l'enregistreur de macro me donne
> ' Et j'ai besoin d'utiliser la méthode Find car suivant le fichier, je
> n'ai pas forcement le même nombre de colonne
> ' Or Mph1 sera toujours ma derniere colonne correspondant à ma phase 1
>
>
> Columns("A:Y").Select
> ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
> ActiveChart.SetSourceData Source:=Range("resultat!$A:$Y")
> End Sub
>
>
> Merci de votre aide, j'espère être assez clair n'hésitez
> pas à demander plus de précision.
Du nouveau,
J'ai essayer d'avancer un petit peu mais je reste toujours boquer pour la même raison...
Il ne me renvoie pas la cellule correspondante
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Worksheets("resultat").Select
Set PlageDeRecherche = Rows("1")
Set Trouve = PlageDeRecherche.Cells.Find(What:="Mph1", LookAt:=xlWhole)
If Trouve Is Nothing Then
Exit Sub
Else
AdresseTrouvee = Trouve.Address
End If
Dim cell As Range
Dim Lastcell1 As Range
Dim graph1 As Range
' Erreur range globale Lastcell1 = nothing et Selection = "Mph1"
Range("AdresseTrouvee" & Rows.Count).End(xlUp).Offset(-1, 0).Select
Lastcell1 = Selection
Range("A1:Lastcell1").Select
Set graph1 = Selection
Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range("graph1")
End Sub
Bonjour, Dans le but d'automatiser l'édition de rapport, j'ai commencé à utiliser les macros sur Excel et avec l'aide de différents forums je commence à comprendre un peu le VBA mais je suis confronté à un problème que je n'arrive pas à résoudre cette fois ci. Alors mon souhait serait de pouvoir définir des plages de données grâce à la méthode Find. Le but est de créer des graphes pour chaque phase 1,2 et 3 et donc il faudrait que je puisse sélectionner ma plage de données pour la graphe de la case A1 à la dernière case correspondant à ma phase 1 soit la colonne "Mph1". Pareil pour le graphique phase 2 : la plage doit correspondre aux 4 premières colonnes de ma feuille + les colonnes correspondant à la phase 2 soit de " 1ph2" à "Mph2". Je vous met ce le tout petit peu de code que j'ai et qui ne fonctionne pas ainsi que mon fichier excel sur lequel je travail. http://www.cjoint.com/c/GFoiTTT3Uky Sub graphe() ' ' graphe Macro ' ' Dim Lastcell1 As Range Dim graph1 As Range Dim cel As Range ' Je vois bien que ce code n'es pas bon du tout ' la méthode find doit renvoyer un Range mais ' j'ai l'impression qu'elle me renvoie "Mph1" ' et pas la case où elle se trouve ' d'ou les problemes ensuite car impossible d'aller prendre l'avant derniere case pour faire ensuite le graphe Worksheets("resultat").Rows("1").Find(What:="Mph1").Select Set cel = Selection Set Lastcell1 = Range("cel" & Rows.Count).End(xlUp).Offset(-1, 0).Select graph1 = Range("A1:lastcell1") ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("graph1") ' Voici ce que l'enregistreur de macro me donne ' Et j'ai besoin d'utiliser la méthode Find car suivant le fichier, je n'ai pas forcement le même nombre de colonne ' Or Mph1 sera toujours ma derniere colonne correspondant à ma phase 1 Columns("A:Y").Select ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("resultat!$A:$Y") End Sub Merci de votre aide, j'espère être assez clair n'hésitez pas à demander plus de précision.
Du nouveau, J'ai essayer d'avancer un petit peu mais je reste toujours boquer pour la même raison... Il ne me renvoie pas la cellule correspondante Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, AdresseTrouvee As String Worksheets("resultat").Select Set PlageDeRecherche = Rows("1") Set Trouve = PlageDeRecherche.Cells.Find(What:="Mph1", LookAt:=xlWhole) If Trouve Is Nothing Then Exit Sub Else AdresseTrouvee = Trouve.Address End If Dim cell As Range Dim Lastcell1 As Range Dim graph1 As Range ' Erreur range globale Lastcell1 = nothing et Selection = "Mph1" Range("AdresseTrouvee" & Rows.Count).End(xlUp).Offset(-1, 0).Select Lastcell1 = Selection Range("A1:Lastcell1").Select Set graph1 = Selection Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select ActiveChart.SetSourceData Source:=Range("graph1") End Sub