probleme de definition: With

Payou

XLDnaute Occasionnel
Bonjour a tous, le forum.

Alors la je dois dire que je savais pas quoi mettre comme titre de discussion, alors si jamais qq'un a une meilleur idée après avoir lu mon post, et qu'un modo passe par la...

Enfin bref, mon problème. Voila, je viens de récupérer un SUPERBE code, ou fichier plutôt fait par un membre de ce forum (Pticle94) pour calculer les points au tarot. Mais voila, la fonction la plus intéressante pour, cad l'affichage en graphique de l'évolution des points ne fonctionne pas. J'ai déjà essayer deux trois trucs, mais rien n'y fait je comprends pas.

Voici le code:

Erreur 1004 : Macro error

Code:
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(1).CodeName).CodeModule

Alors si qq'un vois le problème de cette formule je lui serrai très reconnaissant s'il pouvait me donner la bonne forme de celle-ci :)

D'avance merci,

Payou

P.S: Si besoin de plus de code faut m'dire hein :) Parce qu'il en a fait des lignes y a pas de soucis :D
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : probleme de definition: With

Bonjour Payou

cette ligne de code fonctionne chez moi.... mais attention, 2 chose à vérifier, premièrement il doit y avoir un "end with" :

Code:
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(1).CodeName).CodeModule
'code utilisé dans le bloc
[COLOR="Red"][B]End With[/B][/COLOR]

et la 2ème, c'est là je pense d'ou provient l'erreur, "faire confiance au projet visual basic " doit être cochée dans les options de sécurité.

barre de menu Excel => outils => macro => sécurité => onglet "éditeurs approuvés", la case "faire confiance au projet visual basic " doit être cochée.

bonne journée
@+
 

eriiic

XLDnaute Barbatruc
Re : probleme de definition: With

Bonjour,

J'espère que payou m'excusera de me taper l'incruste mais pierrot tu ecris :
la case "faire confiance au projet visual basic " doit être cochée.

Ca m'interesse car dernièrement j'ai eu un poste de travail qui réagissait différemment sur une macro sans raison. Bon j'ai juste modifié un peu le code mais sans trop comprendre le pourquoi...
En sais-tu un peu plus stp ?

Merci
eric
 

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

Bon ben j'ai fait ce que tu m'as dit mais même problème...

Je poste le reste du code on sais jamais...

Code:
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(1).CodeName).CodeModule
    x = .CountOfLines
    .InsertLines x + 1, "Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long,ByVal X As Long, ByVal y As Long)"
    .InsertLines x + 2, "ActiveWorkbook.Sheets(2).Activate"
    .InsertLines x + 3, "Application.DisplayAlerts = False"
    .InsertLines x + 4, "ActiveWorkbook.Sheets(1).Delete"
    .InsertLines x + 5, "End Sub"
End With

Mais l'erreur est la suivante: "Programmatic access to Visual Basic Project is not trusted"

Ca ressemble pourtant a ce que tu m'as dis je comprends pas...

Payou

EDIT: Bon d'abord je suis un boulet parce qu'en fait faut que je le fasse a chaque fois je crois, parce que cette fois-ci c'était décoché, et la je coche, je relance et ca me donne un superbe message d'erreur : "Microsoft Office Excel has encountered a problem and needs to close..."

Ouais bah je suis super content :)

EDIT2: Bonjour Eriiiic. Euh si on peu modifier le code pour que ca marche partout moi je suis preneur Eriiiic :)
 
Dernière édition:

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

AAaaaah, je tombe dans l'oubli général, et la désuétude :(

Je sais que mon titre de post est pourri et qu'il aide pas a donner envie de lire mon post, mais bon je savais pas quoi mettre donc bon. Mais sachez que je suis toujours a la recherche d'aide :)

Merci pour votre comprehension :D

Payou
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : probleme de definition: With

Re, bonjour Eric

oui, il faut impérativement que la case "faire confiance au projet visual basic" soit cochée pour que ce code fonctionne.

Par contre tu utilises comme variable "x" :
Code:
x = .CountOfLines

et il se trouve que "x" est également un argument que tu insères dans la procédure événementielle "Chart_MouseDown". Modifies le nom de ta variable "x", par "y" par exemple, dans la procédure d'insertion de code... A voir si cela résoudra ton problème...

@+
 

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

Re bonjour Pierrot,

Bah la j'ai essaye en changeant de variable, mais je crois que mon XL ne veux strictement rien savoir, et plante a chaque fois. Même pas la macro qui se bloque, non non, tout excel... Alors bon bah, la je suis pas au mieux :)

Merci quand même !

Payou
 
G

Guest

Guest
Re : probleme de definition: With

Bonjour à tous,

Essaie comme ceci:

Code:
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(1).CodeName).CodeModule
    Dim txtCode As String
    Dim ligne As Integer
    ligne = .CountOfLines + 1
    txtCode = "Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long,ByVal X As Long, ByVal y As Long)" _
            & vbCrLf & "ActiveWorkbook.Sheets(2).Activate" _
            & vbCrLf & "Application.DisplayAlerts = False" _
            & vbCrLf & "ActiveWorkbook.Sheets(1).Delete" _
            & vbCrLf & "End Sub"
    .InsertLines ligne, txtCode
End With

A +
 

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

Re Bonjour Pierrot, bienvenu dans le post Hasco :D

Alors j'ai essayer ton code Hasco, mais bon j'ai toujours le même problème en fait:

XL plannnte ! Quel bourrique celui ! Rien a faire, quand il veut pas, il veut pas... Des que j'active le trust comme dit dans le premier post de Pierrot, bah voila, il fait la tete :(

J'essaierai ce soir sur mon autre ordi, le perso, parce que la je suis au boulot, peut etre que ca ira mieux... Et encore je crains le pire vu que c'est un mac :S

Ah les joies exceliennes c'est qq'chose hein :)

Merci a tous pour vos participations, j'apprécie énormément !

Payou
 

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

Bonjour Pierrot,
J'espère que ta journée d'hier c'est bien passer. Moi moyennement sachant que j'ai la version mac 2008 d'office, qui ne reconnait pas les macros. J'étais content :)

Re

le module dans lequel le code est inséré, est bien le module d'une feuille "graphique" ?

Euh normalement oui... Je me permet de poster le code au complet histoire que tu puisse peut être mieux comprendre le pourquoi du comment ... :)

Code:
Sub Afficher_Graphique()

comp = ActiveWorkbook.Sheets("Scores").Cells(1, 7)

Call RetablirTout
Dim i As Integer
Dim k As Integer
For i = 1 To 6
For k = 3 To comp + 1
Cells(comp + 1, i) = Cells(1, i)
Cells(comp + 2, i) = 0
Cells(comp + k, i) = Cells(k - 1, i)
Next k
Next i

Charts.Add

With ActiveChart
    .SetSourceData Source:=ActiveWorkbook.Sheets("Scores").Range("B" & comp + 1 & ":F" & 2 * comp + 1), PlotBy:=xlColumns
    .SeriesCollection(1).XValues = ActiveWorkbook.Sheets("Scores").Range("a" & comp + 2 & ":a" & 2 * comp + 1)
    .SeriesCollection(2).XValues = ActiveWorkbook.Sheets("Scores").Range("a" & comp + 2 & ":a" & 2 * comp + 1)
    .SeriesCollection(3).XValues = ActiveWorkbook.Sheets("Scores").Range("a" & comp + 2 & ":a" & 2 * comp + 1)
    .SeriesCollection(4).XValues = ActiveWorkbook.Sheets("Scores").Range("a" & comp + 2 & ":a" & 2 * comp + 1)
    .SeriesCollection(5).XValues = ActiveWorkbook.Sheets("Scores").Range("a" & comp + 2 & ":a" & 2 * comp + 1)
    .ChartType = xlXYScatterSmoothNoMarkers
    .HasTitle = True
    .ChartTitle.Text = "Tarot du " & Format(Date, "dddd d mmm yyyy")
    .Name = "Graph"
    .Axes(xlValue).HasTitle = True
    .Axes(xlValue).AxisTitle.Caption = "Points"
    .PlotArea.Interior.ColorIndex = xlNone
    .PlotArea.Border.ColorIndex = xlNone
    .Axes(xlValue).HasMajorGridlines = False
    .SeriesCollection(1).Border.ColorIndex = 1
    .SeriesCollection(1).Border.Weight = xlMedium
    .SeriesCollection(2).Border.ColorIndex = 4
    .SeriesCollection(2).Border.Weight = xlMedium
    .SeriesCollection(3).Border.ColorIndex = 3
    .SeriesCollection(3).Border.Weight = xlMedium
    .SeriesCollection(4).Border.ColorIndex = 7
    .SeriesCollection(4).Border.Weight = xlMedium
    .SeriesCollection(5).Border.ColorIndex = 5
    .SeriesCollection(5).Border.Weight = xlMedium
    .Deselect
End With

Dim x As Integer

With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(1).CodeName).CodeModule
    x = .CountOfLines
    .InsertLines x + 1, "Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long,ByVal X As Long, ByVal y As Long)"
    .InsertLines x + 2, "ActiveWorkbook.Sheets(2).Activate"
    .InsertLines x + 3, "Application.DisplayAlerts = False"
    .InsertLines x + 4, "ActiveWorkbook.Sheets(1).Delete"
    .InsertLines x + 5, "End Sub"
End With

With ActiveWorkbook.VBProject.VBComponents(Sheets(2).CodeName).CodeModule
    x = .CountOfLines
    .DeleteLines 1, x
    .InsertLines 1, "Private Sub Worksheet_Activate()"
    .InsertLines 2, "Application.DisplayAlerts = True"
    .InsertLines 3, "Dim comp As Integer"
    .InsertLines 4, "comp = ActiveSheet.Cells(1, 7)"
    .InsertLines 5, "ActiveSheet.Range(Cells(comp + 1, 1), Cells(2 * comp + 1, 6)).ClearContents"
    .InsertLines 6, "Application.Run ""Score_Tarot.xls!MasquerLignesColonnesVides"""
    .InsertLines 7, "End Sub"
End With
 
End Sub

Bon ok il est baleise, mais bon. Je l'avais dit en début de post, c'est pas un fichier de mickey que nous avait fait notre ami :)

Payou
 

Payou

XLDnaute Occasionnel
Re : probleme de definition: With

Re bonjour,

Lol pourquoi j'y est pas pensé plus tôt ?

Pour ce faire il faut lancer une partie et apres 3 tours, une icone graphique arrive.

En cliquant dessus, l'erreur ce mettra :S

Merci de me tenir au courant si ca fonctionne pas non plus chez vous, ou si je suis le seul a avoir un excel récalcitrant.

P.S: il faut mettre 5 joueurs

Merci d'avance.

Payou
 

Pièces jointes

  • Score_Tarot.zip
    24.8 KB · Affichages: 27
  • Score_Tarot.zip
    24.8 KB · Affichages: 29
  • Score_Tarot.zip
    24.8 KB · Affichages: 28

Statistiques des forums

Discussions
312 448
Messages
2 088 499
Membres
103 871
dernier inscrit
julienleburton