Macros...

lulu49

XLDnaute Nouveau
Macros déplacer des cellules

Bonjour à tous, avec mon niveau peu élevé je n'arrive pas à réaliser de macros pour agencer des données. Je vous ai mis un fichier joint pour éclaircir mes explications

En fait je voudrais faire faire deux choses à excel :
La prémière transférer les données des lignes de la feuille "Table" pour lesquelles les colonnes E à N contiennent des valeurs, dans la table "profils en travers" en les réagencant sous la forme :
REF_PAD_Secteur/REF_PAD_Mesure/Session/X1/Y1
REF_PAD_Secteur/REF_PAD_Mesure/Session/X2/Y2
REF_PAD_Secteur/REF_PAD_Mesure/Session/X3/Y3
REF_PAD_Secteur/REF_PAD_Mesure/Session/X4/Y4
REF_PAD_Secteur/REF_PAD_Mesure/Session/X4/Y5
et ainsi de suite avec les valeurs suivantes (toujours par 5 lignes).

La seconde transférer les données de la feuille "table" dans la feuille "profils en long", supprimer les lignes vides et créer un graphique pour l'ensemble des lignes ayant la même valeur dans la colonne A.

Je vous remercie d'avance car je ne sort pas la tête de l'eau...
 

Pièces jointes

  • LSessai2.xls
    39.5 KB · Affichages: 45
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Macros déplacer des cellules

Bonjour,

Si j'ai compris ce que tu voulais faire, voici le transfert des données.

seules les données non nulles sont transférées.


Pour le graphique il faudrait plus de précision,
si tu veux "graphique pour l'ensemble des lignes ayant la même valeur dans la colonne A", il suffit de faire le graphique en sélectionnant la feuille table( ?) .


GIBI




GIBI
 

Pièces jointes

  • LSessai2.zip
    15.7 KB · Affichages: 32

lulu49

XLDnaute Nouveau
Re : Macros...

Merci GIBI, ta macro fonctionne nickel. Je te mets mon fichier (LSessai3) avec ce que j'ai fait pour remplacer la macro que je n'arrivai pas à réaliser.!! en fait il est trop gros même compressé, désolé.

Sinon je te mets l'autre fichier (graph auto) pour l'édition automatique des graphiques. Je m'explique il faudrait créer automatiquement un graphique (selon le modèle présenté: série 1 = colonne F, série 2 = colonne G et en X la colonne E) pour toutes les cellules identiques dans la colonne B.

J'espère avoir été clair. Merci d'avance pour ton aide.

PS : J'ai pas pigé ce que tu mes dit dans le message précédent pour le graph ;-)
 

Pièces jointes

  • graph auto.zip
    19.1 KB · Affichages: 21
  • graph auto.zip
    19.1 KB · Affichages: 20
  • graph auto.zip
    19.1 KB · Affichages: 20
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Macros...

re-bonjour,

Voici une macro qui crée les graphique selon ton exemple (chaque graphique est généré sur la feuille en cours.



Sub CreerGraphique()

'
Dim MonGraph As Chart
Dim L, LDeb, LFin, Precedent, Position

Position = 10 ' position du 1ier graphe

Worksheets(NomFeuille).Activate

Worksheets(NomFeuille).ChartObjects.Delete ' supprimer tous les graphes existants

L = 2
While Cells(L, 2) <> ""
'reperer début fin plage
Precedent = Cells(L, 2)
LDeb = L
While Cells(L, 2) = Precedent
L = L + 1
Wend
LFin = L - 1
'
Set Mongraphe = ActiveSheet.ChartObjects.Add(Left:=400, Top:=200, _
Width:=400, Height:=300)
Mongraphe.Name = "G" & Precedent
Mongraphe.Chart.ChartType = xlLineMarkers

Mongraphe.Chart.SeriesCollection.NewSeries
Mongraphe.Chart.SeriesCollection(1).XValues = _
Worksheets("Validation profils en long").Range("E" & LDeb & ":E" & LFin)
Mongraphe.Chart.SeriesCollection(1).Values = _
Worksheets("Validation profils en long").Range("F" & LDeb & ":F" & LFin)
Mongraphe.Chart.SeriesCollection(1).Name = "=""substrat"""

Mongraphe.Chart.SeriesCollection.NewSeries
Mongraphe.Chart.SeriesCollection(2).Values = _
Worksheets("Validation profils en long").Range("G" & LDeb & ":G" & LFin)

Mongraphe.Chart.SeriesCollection(2).Name = "=""ligne d'eau"""

Mongraphe.Chart.HasTitle = True
Mongraphe.Chart.ChartTitle.Text = Precedent
p = ActiveSheet.ChartObjects.Count

With Worksheets("Validation profils en long").ChartObjects(p)
.Left = 700
.Top = Position
Position = Position + .Height + 10

End With


Wend

End Sub


Ajout :

tu peux aussi positionner les graphes par rapport à une colonne et une ligne

Worksheets(NomFeuille).ChartObjects(p).Left = Worksheets(NomFeuille).Columns("j").Left
Worksheets(NomFeuille).ChartObjects(p).Top = Worksheets(NomFeuille).Rows(LDeb).Top

GIBI
 
Dernière édition:

lulu49

XLDnaute Nouveau
Re : Macros...

Bonjour GIBI, désolé pour le temps de réponse, le week-end a été surchargé.
Je suis en train de reprendre ta macro et j'ai quelques pb :

tout d'abord je débogueur me trouve une erreur d'exécution sur les lignes :

Worksheets(NomFeuille).Activate
Worksheets(NomFeuille).ChartObjects.Delete ' supprimer tous les graphes existants

J'ai supprimé ces lignes et ça fonctionne sans supprimer les graphs précédents mais ça me pose pb et je ne trouve pas l'erreur.

Autre pb je n'arrive pas à modifier la mise en forme pour avoir les graphs élaborés présentés dans le doc joint (charte graphique et légendes des axes et séries)???

Merci d'avance car j'apprends pas mal de chose à force de chercher et de bricoler sur ces macros.
 

Pièces jointes

  • graph auto 2.zip
    27.8 KB · Affichages: 20

GIBI

XLDnaute Impliqué
Re : Macros...

bonjour,

il faut réfléchir un peu!
n'aurais tu pas oublié de déclarer NomFeuille (qui est une varaible), soit

sous la forme

Const NomFeuille = "Validation profils en long" (à mettre avant les sub)

soit

dim NomFeuille as string

NomFeuille = "Validation profils en long"


GIBI


AJOUT :
pour modifier tes graphique, tu peux trouver facilement comment faire en utilisant l'enregistreur de macro
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
208
Réponses
0
Affichages
188
Réponses
11
Affichages
502

Membres actuellement en ligne

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12