Erreur: argument ou appel de procedure incorrect

romainchu78

XLDnaute Occasionnel
Bonjour a tous,
jai une macro qui charge le contenu de fichiers text dans une nouvelle feuille excel. je suis limite a deux chargement.
une fois les donnees chargees, a laide d'une macro je creer un camembert sur chacune des deux feuilles.
mon code assigne le nom du fichier text au feuille excel. ainsi si je charge le fichier aaa.txt. les donnes du fichier aaa.txt iront dans une nouvelle feuille excel appel aussi aaa.

mon probleme est que lorsque je charge mon deuxieme fichier text lors de la creation du 2eme camembert; jai un message d'erreur: "argument ou appel de procedure incorrect" a la ligne 4: "ActiveChart.Location Where:=xlLocationAsObject, Name:=NomFichierCourt2".

voici le code du camembert (attention ca pique les yeux):


Charts.Add.Name = "Chart 2"
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Sheets(NomFichierCourt2).Range("H5:I6,H8:I10"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=NomFichierCourt2

ActiveChart.SeriesCollection(1).Points(1).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).Points(2).Select
With Selection.Interior
.ColorIndex = 33
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).Points(3).Select
With Selection.Interior
.ColorIndex = 41
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).Points(4).Select
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).Points(5).Select
With Selection.Interior
.ColorIndex = 55
.Pattern = xlSolid
End With

ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
False, HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:= _
True, ShowValue:=False, ShowPercentage:=True, ShowBubbleSize:=False
ActiveChart.PlotArea.Select

With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 2
.PatternColorIndex = 1
.Pattern = xlSolid
End With

Range("A2").Select

ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Chart 2").IncrementLeft 264.75
ActiveSheet.Shapes("Chart 2").IncrementTop 24.75
ActiveChart.Legend.Select
Selection.Delete
ActiveSheet.Shapes("Chart 2").ScaleWidth 0.9, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Chart 2").ScaleWidth 0.87, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("Chart 2").IncrementTop 15#
ActiveWindow.Visible = False
Windows(NomFichierLong1).Activate
Range("J8:M8").Select
Range("M8").Activate
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("A2").Select

ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.PlotArea.Select
Selection.ClearFormats

With ActiveSheet.ChartObjects(1)
.Left = Range("H12").Left
.Top = Range("H12").Top
End With




le variable "NomFichierCourt2" sert a stoker le nom du fichier text charge et aussi celui de la feuille excel nouvellement cree (comme je les dit ils ont le meme nom". ces variables sont utilisees pour les deux fichiers. le premier fichier cree normalement le camembert. et le probleme intervient avec quelques fichier text charge pas tous.


jai essaye de declarer ces variables vide au debut, mais c'est pareil.
je suis vraiment coince...je ne comprend pas. please help...
 

Dan

XLDnaute Barbatruc
Re : Erreur: argument ou appel de procedure incorrect

Bonjour,

Dans ta procédure, pourrais-tu donner le code qui concerne "NomFichierCourt2". Tu devrais avoir : NomFichierCourt2 = ....

Logiquement cela devrait être le nom d'une feuille de ton classeur.

Est-ce bien le cas ?

A te lire
 

romainchu78

XLDnaute Occasionnel
Re : Erreur: argument ou appel de procedure incorrect

merci pour ta reponse,
c'est absoluement le cas...voici le code:

Public NomFichierLong1 As String, NomFichierCourt1 As String, NomFichierLong2 As String, NomFichierCourt2 As String

Sub ImportDonnées()

startover:
Dim wbk1 As Workbook, wbk2 As Workbook
Dim FileToOpen As Variant
Dim ScrHst As Object
Dim WhereIsMyDocuments As String, TheCurDir As String
TheCurDir = CurDir
Set ScrHst = CreateObject("WScript.Shell")
WhereIsMyDocuments = ScrHst.SpecialFolders("MyDocuments") 'Pour ouvrir la boite de dialogue par default sur mes documents
ChDir WhereIsMyDocuments
NomFichierLong1 = ""
NomFichierCourt1 = ""
NomFichierLong2 = ""
NomFichierCourt2 = ""


Set wbk1 = ActiveWorkbook
NomFichierLong1 = ActiveWorkbook.Name
NomFichierCourt1 = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)

FileToOpen = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt") 'On preleve le chemin d'acces du fichier a charger

' Application.ScreenUpdating = False
' If FileToOpen = False Then Exit Sub 'La boucle qui est cense ferme proprement la boite d'ouverture de fichier, si le mec appuie sur ANNULER ou FERMETURE au lieu de choisir un fichier

If FileToOpen <> "Faux" Then

'Copiage du contenu du fichier text ouvert dans un nouveau workbook
Workbooks.OpenText Filename:=FileToOpen _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1))

Set wbk2 = ActiveWorkbook

NomFichierLong2 = ActiveWorkbook.Name 'Copiage du nom complet du titre du 2eme workbook dans une variable
NomFichierCourt2 = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) 'Copiage du nom sans extension du titre du 2eme workbook dans une variable


' wbk1.Activate 'On reactive le 1er workbook
' Windows("Romainchu78.xls").Activate 'On reactive le 1er workbook
Windows(NomFichierLong1).Activate 'On reactive le 1er workbook

For Each Worksheet In wbk1.Sheets
If Worksheet.Name = NomFichierCourt2 Then
MsgBox "Part list already loaded or many Part lists with the same title"
wbk2.Close False
GoTo startover
End If
Next

Windows(NomFichierLong2).Activate 'On reactive le 2eme workbook
' wbk2.Activate 'On reactive le 2eme workbook
Rows("1:4").Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.Copy

Windows(NomFichierLong1).Activate 'On reactive le 1er workbook
Application.ScreenUpdating = False
Sheets("AC11").Activate
Range("a1").Activate
Cells.Select
Range("a1").Select
ActiveSheet.Paste
Range("a1").Select
TEST = 0

Do While TEST = 0 Or ActiveCell = ""
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "__________________________________________" Then
ActiveCell.Value = "FIN"
TEST = 1
End If
Loop

Range("a1").Select
ValTestOpen = 1

Else
ValTestOpen = 0
End If

Application.DisplayAlerts = False
Windows(NomFichierLong2).Close False
Application.DisplayAlerts = True


Set wbk1 = Nothing
Set wbk2 = Nothing

End Sub


bonne journee
 

Dan

XLDnaute Barbatruc
Re : Erreur: argument ou appel de procedure incorrect

Re,

Pas facile de comprendre ce que tu fais là.
Pour ta question, ton pb vient du fait que tu demandes à placer le graph dans un fichier et non dans une feuille de ce fichier.
Là, essaie en supprimant l'instruction -->
Code:
ActiveChart.Location Where:=xlLocationAsObject, Name:=NomFichierCourt2
ou alors mets un nom de feuille à la place de "NomFichieCourt2" (ou un nom de feuille en plus de "nomfichiercourt2").

D'autre part, mets de l'ordre dans tes macros car on comprend pas bien ce que tu fais là :
1. Mettre au début "Application.ScreenUpdating = False" avec FALSE à faire passer à TRUE à la fin de ta macro.
Là toutes ces instructions ne sont pas placées avec ordre !
2. "GoTo Startover" si c'est une macro qui se trouve dans ce fichier, pas besoin du "Goto"
3. J'ai pas ton fichier mais les instructions "window....activate", je pense que ce serait mieux de mettre WORKBOOK. Si les deux fichiers sont ouverts, tu ne devrais pas avoir de pb. Fais un essai.

Ce sont les petites choses que je vois mais bon à vérifier tout de même.

A bientôt

Edition : Oups, je me suis trompé pour le GOTO. Désolé cela te ramène au début de ta macro. Toutefois, à éviter !! on te l'a déjà dit. ---> https://www.excel-downloads.com/threads/detecter-les-noms-des-feuilles-dun-workbook.65941/
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 285
Membres
103 507
dernier inscrit
tapis23