Besoin d'aide sur un Macro dans Excel !!!!!

Résolu/Fermé
manutalontsi Messages postés 27 Date d'inscription lundi 11 août 2008 Statut Membre Dernière intervention 12 août 2009 - 5 janv. 2009 à 21:27
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 3 juin 2009 à 22:01
Bonjour, Tout d'abord MErci a tout le monde qui vont m'aider votre aide est grandement apprécier
Je vais vous explique le problème et ensuite je vais copier le macro de visual basic. A noter que j'ai fais ce macro en enregistrant ce que j'ai fait et non en le programmant!

Donc , le nut es de créé des graphique alors je dois entré un certain nombre de donnée dans un feuille a chaque jour de 16 a 25 donnée. Une fois les donnée mis dans la feuille bien je fais mon macro tous va bien sauf que si je fais mon macro avec 16 donnée , quand j'en mes 25 , 9 ne seront pas afficher , l'inverse es aussi vrai si je le fait avec 25 bien il y aura 9 case de vide. Pourtant quand je créé mon graphique je sélectionne ma colonne au complet.... J'ai souligner 3 ligne je crois que le probleme vien de la 3ime je pensais la mettre en absolue mais c bizarre car il me mes tjrs 25 section dans le graphique....... alors j'attend votre aide MERCI

Sub Graphique()
'
' Graphique Macro
' Créateur de Graphique Made By Manu
'
' Touche de raccourci du clavier: Ctrl+g
'
ActiveWindow.SmallScroll Down:=-3
Range("A1:J16").Select
Range("J16").Activate
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-17
Range("A1").Select
ActiveSheet.Paste
Application.CommandBars("Clipboard").Visible = False
Range("E8").Select
ActiveWindow.SmallScroll Down:=-10
Sheets("Productivité").Select
ActiveWindow.SelectedSheets.Delete
Sheets("% de rejet").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Donnée source").Select
ActiveWindow.SmallScroll Down:=-3
Range("C1:C16").Select
ActiveWindow.SmallScroll Down:=-18
Range("G1:G16").Select
ActiveWindow.SmallScroll Down:=-12
Range("G1:G16,C1:C16").Select
Range("C1").Activate
ActiveWindow.SmallScroll Down:=-19
Range("G1:G16,C1:C16,K1:K16").Select Range("K1").Activate
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
"Courbes - Histogramme"
ActiveChart.SetSourceData Source:=Sheets("Donnée source").Range( _
"C1:C16,G1:G16,K1:K16"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Productivité"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Productivité Ven.(05/12/2008)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Produit"
.Axes(xlValue, xlPrimary).HasTitle = False
.Axes(xlCategory, xlSecondary).HasTitle = False
.Axes(xlValue, xlSecondary).HasTitle = False
End With
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScale = 2
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 1
.Pattern = xlSolid
End With
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
AutoText:=True, LegendKey:=False
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.NumberFormat = "0%"
ActiveChart.Axes(xlCategory).Select
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Fill.PresetGradient Style:=msoGradientHorizontal, Variant:=1, _
PresetGradientType:=msoGradientHorizon
Selection.Fill.Visible = True
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.ChartArea.Select
Sheets("Donnée source").Select
Range("E8").Select
ActiveWindow.SmallScroll Down:=-3
Range("C1:C16").Select
ActiveWindow.SmallScroll Down:=-12
Range("C1:C16,J1:J16").Select
Range("J1").Activate
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Donnée source").Range( _
"C1:C16,J1:J16"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="% de rejet"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "% Rejets Ven.(05/12/2008)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Produit"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 2
.Background = xlAutomatic
End With
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Fill.PresetGradient Style:=msoGradientHorizontal, Variant:=2, _
PresetGradientType:=msoGradientEarlySunset
Selection.Fill.Visible = True
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Sheets("Productivité").Select
End Sub
A voir également:

8 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
5 janv. 2009 à 22:02
bonjour

Pour faire un graphique évolutif, il vaut mieux passer par des plages nommées avec la fonction DECALER surtout lorsque l'on ne maîtrise pas le VBA.

Le code sorti de l'enregistreur est "imbuvable" surtout si l'on n'enlève pas les déplacements et les "select" inutiles.
0
manutalontsi Messages postés 27 Date d'inscription lundi 11 août 2008 Statut Membre Dernière intervention 12 août 2009 2
6 janv. 2009 à 01:11
D'accord je te remercie , mais je ne crois pas que sa répond a ma question. Pcq le macro que j'ai fait en enregistrant fonctionne bien c juste le nombre de plage que la graphique retiens. EN fesant le meme test , en produisant un graphique on peux voir que sa fonctionne pas , ex

A B
Opérer presse 107,19%
Opérer presse 102,10%
Opérer presse 70,88%
Opérer presse 125,22%
Opérer presse 113,09%
Opérer presse 96,61%
Opérer presse 117,18%
Percer 100,00%
Percer 100,00%


Voila avec koi je fais mon graphique, si j'ai 25 opérations et je produit mon graphique tout es correcte (essaie le juste encopiant la derniere opération) Quand je fait mon graphique je sélectionne la colonne au complet pour qu'il prenne toute les donner qu'il trouve alors c'Est correcte, mais quand tu enleve des donner ou en rajoute , tu en as 25 ettu passe a 10 et bien il y a 15 case de libre.... C'est sa mon probleme! Es ce que sa vous éclaire un peux?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
6 janv. 2009 à 10:05
bonjour

quand tu enleve des donner ou en rajoute , tu en as 25 ettu passe a 10 et bien il y a 15 case de libre....

Si la taille de ton graphique est gérée par une formule nommée avec la fonction decaler tu n'as plus ce problème.

- nom : "ton nom"
- formule : =DECALER(B1;;;NBVAL(B:B);1)

Dans les séries de ton graphique tu utilises "ton nom" et le tour est joué.

Bien sûr tu peux avoir plusieurs séries et tu nommes les plages qu'il te faut.

essaie le juste encopiant la derniere opération

sauf que tu oublies que je n'ai pas ton classeur pour essayer et que je n'ai qu'une très vague idée de sa structure...
0
manutalontsi Messages postés 27 Date d'inscription lundi 11 août 2008 Statut Membre Dernière intervention 12 août 2009 2
6 janv. 2009 à 12:53
d'accord je vais essayer ça , mais mon questionnement es au je mes la formule? Quand je cré mon graphique j'utilise l'assistant graphique.... Alors la formule je la mes ou? Je fais essayer sa quand meme!!!!!
Merci bcp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
6 janv. 2009 à 16:02
bonjour

Une explication officielle ici
0
Bonsoir gbinforme,Bremic83 a encore recours à toi pour le problème çi-dessous:

J'ai créé la macro "budget macro" pour l'appliquer sur le tableau qui suit.
Je voudrais pouvoir la faire agir sur n'importe laquelle des cellules de la colonne E,mais pas simultanément,
au coup par coup selon les règlements effectués chaque jour.
Telle quelle est ,actuellement,elle n'opère que sur la cellule E A,ce n'est qu 'un essai qui fonctionne très bien,
mais pour la suite,je suis dépassé,alors,si tu peux m'indiquer la marche à suivre....!

D'avance,Merçi,et

Aplus

Bremic83

'
' budget Macro
'
' Touche de raccourci du clavier: Ctrl+t
'
Range("E4").Select
ActiveCell.FormulaR1C1 = "=RC[-3]"
Range("B4").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("D4").Select
ActiveCell.FormulaR1C1 = ""
Range("F9").Select
End Sub


A B C D E

JUILLET 2009
Dépenses
objet montant moyen A payer Payé ce Jour
A 32,00 pvt 32,00
B 84,00 pvt 84,00
C 50,00 pvt 50,00
D 58,00 pvt 58,00
E 52,44 pvt 52,44
F 136,08 pvt 136,08
G 15,00 pvt 15,00
H 920,00 CQ 920,00
I 60,00 CQ 60,00
J 100,00 pvt 100,00
K 0,00
L 0,00
M 0,00
N 0,00
O 0,00
P 0,00
Q 0,00
R 0,00
S 0,00
T 0,00
U 0,00
V 0,00
W 0,00
Y 0,00
Z 0,00
AA 0,00
AB 0,00
AC 0,00
AD 0,00
AE 0,00
AF 0,00
AG 0,00
AH 0,00
AI 0,00
AJ 0,00
AK 0,00
AL 0,00
AM 0,00
AN 0,00
AO 0,00
AP 0,00
AQ 0,00
AR 0,00
AS 0,00
AT 0,00
AU 0,00
AV 0,00
1507,52 1507,52 0,00
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
1 juin 2009 à 22:28
bonjour

Je ne sais pas si j'ai compris ton problème, mais je te propose ceci à mettre dans la feuille VBA concernée :
Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(sel, [C:C]) Is Nothing Then
    Cells(sel.Row, "E").FormulaR1C1 = "=RC[-3]"
    With Cells(sel.Row, "B").Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Cells(sel.Row, "D").FormulaR1C1 = ""
End If
End Sub

Lorsque tu saisis le moyen de paiement en colonne C, cela déclenche ta macro automatiquement sur la bonne ligne.

Si ce n'est pas cela, continue ta question.
0
Bonjour gbinforme
Lorsque j'ai copié-collé mon tableau pour te le transmettre,il était très clair et lisible,je comprend ta
perplexité,lorsque je le vois ,tel que tu l'as reçu,sur le forum !
Je vais donc essayer de t'expliquer ce que je voudrais faire:

Comme tu l'as compris,le tableau est composé comme suit:
5 colonnes A B C D E
50 lignes 1 2 3 ...etc

colonne A : Nom du débiteur
" B : montant de la dépense (imprimé en bleu )
" C : moyen de paiement ( chèque,prélèvement,carte bancaire,etc...
" D : copie conforme de col. B imprimée en rouge
" E : copie,dans la même ligne, de la col. B,faite au jour le jour (explications çi-dessous )

Les colonnes B et D ,à l'enregistrement initial,sont identiques,B en bleu, D en rouge
A chaque règlement de dépense,la cellule concernée en D est vidée de son contenu,la cellule correspondante en B,conserve son contenu,mais passe en couleur rouge,et apparait sur la même ligne en colonne E.

Cette dernière colonne sert,au jour le jour,à enregistrer les paiements,et à les déduire du CCP ou du compte bancaire.(Cette dernière opération se fait en dehors de la macro),lorsque ces opérations sont faites,le contenu
des cellules col E sont effacés,et elle reste vide.

A la fin du mois,s'il n'y a pas de report sur le mois suivant,la colonne B est remplie,comme initialement,mais
en rouge,et les colonnes D et E sont vides

La commande sur le moyen de paiement,que tu m'as envoyée,ne me convient pas ,attendu que cette donnée
est enregistrée en même temps que la dépense,et qu'elle va faire agir la macro prématurément?

J'espère que mes explicationss sont suffisamment claires,et que tu pourras en tirer quelque chose.

A plus et merçi.


Bremic83
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
2 juin 2009 à 23:51
bonjour

Effectivement j'avais extrapolé sur un événement improbable.

Si j'ai bien compris, tu veux lancer la macro avec ctrl + t lorsque tu as choisis la ligne concernée ?
Pour cela je te propose presque la même chose mais adaptée à ta procédure :
Public Sub paiement()
    Cells(ActiveCell.Row, "E").FormulaR1C1 = "=RC[-3]"
    With Cells(ActiveCell.Row, "B").Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Cells(ActiveCell.Row, "D").FormulaR1C1 = ""
End Sub

La macro agit sur la ligne sélectionnée (peu importe la ou les colonnes) et devrait faire ce que tu espères.
0
Bonjour
Tout d'abord,merçi d'avoir réagi aussi vite.
J'ai enregistré ton code,et j'ai d'abord eu une fenêtre d'erreur,sur la dernière ligne,qui est passée en rouge,
et qui me disait: "Erreur de compilation End Sub attendu".
J'ai recopié toute cette ligne,et j'ai essayé d'exécuter la macro.
Nouvelle fenêtre d'erreur:"Impossible d'éxécuter le code en mode arrêt"
J'ai cliqué sur "aide"...,et je n'ai rien compris !!!
La ligne recopiée est toujours en rouge,bnien que le message d'erreur ne soit plus le même.
Le béotien que je suis t'appelle une nouvelle fois à son secours !

A plus


Bremic83
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
3 juin 2009 à 22:01
bonjour

"End Sub" est bien dans le code fourni et c'est sans doute une erreur dans le copier/coller qui en est la cause ou bien tu as collé la macro à l'intérieur de la tienne.

Dans ta feuille concernée tu peux aussi essayer la macro suivante : il te suffit de double cliquer sur la ligne concernée par le paiement pour qu'elle s'exécute (mode d'emploi éventuel).
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
Cancel = True
    Cells(sel.Row, "E").FormulaR1C1 = "=RC[-3]"
    With Cells(sel.Row, "B").Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Cells(sel.Row, "D").FormulaR1C1 = ""
End Sub
0