Erreur 1004 vba excel
Résolu
moapremier
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
moapremier Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
moapremier Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
bon voila j'ai fait une macro et je dois sélectionner une cellule pour contrôler si elle vide où non.
j'utilise cette commande : Range(Cells(10, 2)).Select => là ça bug
quand j'utilise : Range("J2").Select => là ça passe :(
je peux pas utiliser la seconde méthode par ce que je souhaite l'introduire dans une boucle for.
voici tout le code
Private Sub transfert_Click()
Dim i, j As Double
Dim f, g As Double
Dim leer As Boolean
'======================= suchen die daten - recherche des données =======================
'control dass es ein datei gibt - contôle de présence de fichier
If classeur1 = vide Then Exit Sub
If classeur2 = vide Then Exit Sub
'öffnen der Datei .csv - ouverture du fichier .csv
Workbooks.Open Filename:=classeur1
'Kopieren die daten von der datei .csv - copier les données du fichier .csv
Cells.Select
Selection.Copy
'öffnen der Datei .xls - ouverture du fichier .xls
NameFichier = ActiveWorkbook.Name
Workbooks.Open Filename:=classeur2
'einfügen die daten in der datei .xls - coller les données dans le fichier .xls
Cells.Select
ActiveSheet.Paste
'schliessen die datei .csv - fermer le fichier.csv
Workbooks(NameFichier).Close
'konvertieren den string -> Koolonne - convertir les chaînes de caractère -> colonne
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Semicolon:=True
'====================== Datenverarbeitung - traitement des données ======================
'Definit le nbr de ligne et de colonne de la liste
f = ActiveSheet.UsedRange.Columns.Count
g = ActiveSheet.UsedRange.EntireRow.Count
'leer = 1
'For i = 2 To 256
' link_xls.Text = i
' If Cells(10, 2) <> 0 Then
' leer = leer + 1
' link_csv.Text = leer
' End If
'Next
'If leer = 0 Then
Range(Cells(10, 2)).Select
'Range("J2").Select
If Selection = "" Then
Columns(10).Select
Selection.Delete
End If
End Sub
ps : j'en ai besoin pour un projet au boulot et j'utilise excel 2000, mais il bug aussi chez moi avec excel 2003.
En espérant que vous pourrez m'aider.
bon voila j'ai fait une macro et je dois sélectionner une cellule pour contrôler si elle vide où non.
j'utilise cette commande : Range(Cells(10, 2)).Select => là ça bug
quand j'utilise : Range("J2").Select => là ça passe :(
je peux pas utiliser la seconde méthode par ce que je souhaite l'introduire dans une boucle for.
voici tout le code
Private Sub transfert_Click()
Dim i, j As Double
Dim f, g As Double
Dim leer As Boolean
'======================= suchen die daten - recherche des données =======================
'control dass es ein datei gibt - contôle de présence de fichier
If classeur1 = vide Then Exit Sub
If classeur2 = vide Then Exit Sub
'öffnen der Datei .csv - ouverture du fichier .csv
Workbooks.Open Filename:=classeur1
'Kopieren die daten von der datei .csv - copier les données du fichier .csv
Cells.Select
Selection.Copy
'öffnen der Datei .xls - ouverture du fichier .xls
NameFichier = ActiveWorkbook.Name
Workbooks.Open Filename:=classeur2
'einfügen die daten in der datei .xls - coller les données dans le fichier .xls
Cells.Select
ActiveSheet.Paste
'schliessen die datei .csv - fermer le fichier.csv
Workbooks(NameFichier).Close
'konvertieren den string -> Koolonne - convertir les chaînes de caractère -> colonne
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Semicolon:=True
'====================== Datenverarbeitung - traitement des données ======================
'Definit le nbr de ligne et de colonne de la liste
f = ActiveSheet.UsedRange.Columns.Count
g = ActiveSheet.UsedRange.EntireRow.Count
'leer = 1
'For i = 2 To 256
' link_xls.Text = i
' If Cells(10, 2) <> 0 Then
' leer = leer + 1
' link_csv.Text = leer
' End If
'Next
'If leer = 0 Then
Range(Cells(10, 2)).Select
'Range("J2").Select
If Selection = "" Then
Columns(10).Select
Selection.Delete
End If
End Sub
ps : j'en ai besoin pour un projet au boulot et j'utilise excel 2000, mais il bug aussi chez moi avec excel 2003.
En espérant que vous pourrez m'aider.
A voir également:
- Excel vba 1004
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
25 réponses
Bonjour,
"Range(Cells(10, 2)).Select" => alors premiere chose, cells(10,2) fait référence à B10 et non J2 ( Cells(ligne, colone)
sinon cells(10,2).select suffit par besoin du Range()....
"Range(Cells(10, 2)).Select" => alors premiere chose, cells(10,2) fait référence à B10 et non J2 ( Cells(ligne, colone)
sinon cells(10,2).select suffit par besoin du Range()....
Sur 2003, ça fonctionne
Mais il me semble que j'avais déjà testé sur la version 2000 et que ça n'avait marcher
je teste demain et je vous donne le résultat
je te remercie aussi pour l'inversion entre ligne et colonne, j'avais pas fait attention à ça
Je te remercie de ton aide tompols
Mais il me semble que j'avais déjà testé sur la version 2000 et que ça n'avait marcher
je teste demain et je vous donne le résultat
je te remercie aussi pour l'inversion entre ligne et colonne, j'avais pas fait attention à ça
Je te remercie de ton aide tompols
ça a bien fonctionné tompols, mais j'ai autre problème du même type
j'essye de renomer un onglet et j'ai la même erreur.
voici le code que j'utilise :
Sub Tri()
classeur2 = Application.GetOpenFilename("*.xls,*.xls")
'ActiveSheets.Name = zeitergeleitet
'Worksheets.Name = zeitergeleitet
'Sheets(1).Name = zeitergeleitet
'Workbooks(classeur2).Save
'Workbooks(classeur2).Close
End Sub
je vous remercie de votre aide
j'essye de renomer un onglet et j'ai la même erreur.
voici le code que j'utilise :
Sub Tri()
classeur2 = Application.GetOpenFilename("*.xls,*.xls")
'ActiveSheets.Name = zeitergeleitet
'Worksheets.Name = zeitergeleitet
'Sheets(1).Name = zeitergeleitet
'Workbooks(classeur2).Save
'Workbooks(classeur2).Close
End Sub
je vous remercie de votre aide
Bonjour,
ActiveSheet.name = "zeitergeleitet" 'renomme l'onglet actif
Sheets(1).Name = "zeitergeleitet" 'renomme la feuille 1
Activeworkbook.save 'sauvegarde le classeur actif
Workbooks("classeur2.xls").save 'sauvegarde le classeur Classeur2.xls
voilà :)
ActiveSheet.name = "zeitergeleitet" 'renomme l'onglet actif
Sheets(1).Name = "zeitergeleitet" 'renomme la feuille 1
Activeworkbook.save 'sauvegarde le classeur actif
Workbooks("classeur2.xls").save 'sauvegarde le classeur Classeur2.xls
voilà :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en fait voila les problèmes que j'ai :
'ActiveSheets.Name = zeitergeleitet => erreur 424
'Sheets(1).Name = zeitergeleitet => erreur 1004
renommer la première feuille est bien ce que je veux faire
'ActiveSheets.Name = zeitergeleitet => erreur 424
'Sheets(1).Name = zeitergeleitet => erreur 1004
renommer la première feuille est bien ce que je veux faire
Bonjour,
tu n'as pas lu mon poste précédent ???? le nom tu les mets entre guillemets, ensuite c'est activesheet sans s....
tu n'as pas lu mon poste précédent ???? le nom tu les mets entre guillemets, ensuite c'est activesheet sans s....
si tu ne met pas de guillemet c'est compté comme une variable, du coup tu essaye de renommer ta feuille avec une valeur null
désolé tompols, je ne l'avais pas vu le "s" en moins
j'ai testé sans le "s" et ça me provoque une erreur 1004...
j'ai testé sans le "s" et ça me provoque une erreur 1004...
Je te remercie, ça fonctionne comme ça; se frappe la tête contre un mur :p
je pense que je risque encore d'avoir des questions à cause de l'erreur 1004, vu sa capacité à me casser les pieds.... :p
=> prochaine étape : programmer un pareto et comprendre les codes que j'ai déjà trouvé
je pense que je risque encore d'avoir des questions à cause de l'erreur 1004, vu sa capacité à me casser les pieds.... :p
=> prochaine étape : programmer un pareto et comprendre les codes que j'ai déjà trouvé
qu'est ce que je disais :(, jai à nouveau cette erreur
voila le code pour le pareto que j'ai trouvé :
Sub Macro1()
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh => il big ici
Range("A4").Select
pareto = 0
Selection.Ungroup
For i = 5 To 100
pareto = Range("C" & i).Value + pareto
If pareto >= 0.8 Then
max0 = i + 1
Exit For
End If
Next i
max1 = Range("A4").End(xlDown).Row - 1
Range("A" & max0, "A" & max1).Select
Selection.Group
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom Fournisseur2")
.Caption = "Nom Fournisseur "
.PivotItems("Groupe1").Caption = "Reste des fournisseurs"
.PivotItems("Reste des fournisseurs").ShowDetail = False
.AutoSort xlDescending, "Sum of Montant Commandé 2"
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom Fournisseur"). _
Orientation = xlHidden
End Sub
à priori, il a déjà été testé, je l'ai récupérer ici : https://www.excel-downloads.com/threads/grphique-tcd-avec-pareto.78645/ je vais aussi voir avec eux s'ils voient d'où peut provenir le problème
voila le code pour le pareto que j'ai trouvé :
Sub Macro1()
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh => il big ici
Range("A4").Select
pareto = 0
Selection.Ungroup
For i = 5 To 100
pareto = Range("C" & i).Value + pareto
If pareto >= 0.8 Then
max0 = i + 1
Exit For
End If
Next i
max1 = Range("A4").End(xlDown).Row - 1
Range("A" & max0, "A" & max1).Select
Selection.Group
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom Fournisseur2")
.Caption = "Nom Fournisseur "
.PivotItems("Groupe1").Caption = "Reste des fournisseurs"
.PivotItems("Reste des fournisseurs").ShowDetail = False
.AutoSort xlDescending, "Sum of Montant Commandé 2"
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom Fournisseur"). _
Orientation = xlHidden
End Sub
à priori, il a déjà été testé, je l'ai récupérer ici : https://www.excel-downloads.com/threads/grphique-tcd-avec-pareto.78645/ je vais aussi voir avec eux s'ils voient d'où peut provenir le problème
d'après l'explorateur d'objet PivotTables demande un index (optionel) en paramètre, hors tu y met un string au lieu du integer
le problème, c'est aue même en applicant l'exemple donné par l'aide, ça bug
voici l'exemple : Worksheets(1).PivotTables(1).PivotCache.Refresh
voici l'exemple : Worksheets(1).PivotTables(1).PivotCache.Refresh
Salut
bon là tu essaies de manipuler le tableau croisé dynamique numéro 1 de ta feuille 1....t'es sur qu'il existe ?
bon là tu essaies de manipuler le tableau croisé dynamique numéro 1 de ta feuille 1....t'es sur qu'il existe ?
j'essaie de créer le tableau croisé, mais à chaque fois que j'essaie quelque chose je tombe sur l'erreur 1004 :(
voila un exemple :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"ramasse!R1C1:R" & lastrow & " C8").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique4"
le problème est que j'ai du mal à voir auoi serve chacun des paramètre
voila un exemple :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"ramasse!R1C1:R" & lastrow & " C8").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique4"
le problème est que j'ai du mal à voir auoi serve chacun des paramètre
voila om j'arrive :
ActiveWorkbook.PivotCaches.Add SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1" & lastrow & lastCol
=> je crée le cache du tableau
ActiveWorkbook.PivotCaches.Item.CreatePivotTable TableDestination:= _
"new!R1C1", TableName:="Tableau", readdata:=True
=> je crée le tableau lui même
le problème c'est que je ne sais pas comment les associés pour avoir ce que je veux
j'ai essayé de l'associé comme c'est fait dans le post du dessus, mais ça ne marche pas non plus
voila mon code :
Sub Tri()
classeur2 = Application.GetOpenFilename("*.xls,*.xls")
If classeur2 = vide Then Exit Sub
Workbooks.Open Filename:=classeur2
Sheets(1).Name = "zeitergeleitet"
Sheets(2).Activate
ActiveSheet.Name = "New"
Dim lastrow As Double
lastrow = ActiveSheet.UsedRange.EntireRow.Count
lastCol = ActiveSheet.UsedRange.Columns.Count
'ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
' "zeitergeleitet!A1" & lastrow & lastCol).CreatePivotTable TableDestination:="new", TableName:= _
' "Tableau"
ActiveWorkbook.PivotCaches.Add SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1" & lastrow & lastCol
ActiveWorkbook.PivotCaches.Item.CreatePivotTable TableDestination:= _
"new!R1C1", TableName:="Tableau", readdata:=True
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Je vous remercie de votre aide
ActiveWorkbook.PivotCaches.Add SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1" & lastrow & lastCol
=> je crée le cache du tableau
ActiveWorkbook.PivotCaches.Item.CreatePivotTable TableDestination:= _
"new!R1C1", TableName:="Tableau", readdata:=True
=> je crée le tableau lui même
le problème c'est que je ne sais pas comment les associés pour avoir ce que je veux
j'ai essayé de l'associé comme c'est fait dans le post du dessus, mais ça ne marche pas non plus
voila mon code :
Sub Tri()
classeur2 = Application.GetOpenFilename("*.xls,*.xls")
If classeur2 = vide Then Exit Sub
Workbooks.Open Filename:=classeur2
Sheets(1).Name = "zeitergeleitet"
Sheets(2).Activate
ActiveSheet.Name = "New"
Dim lastrow As Double
lastrow = ActiveSheet.UsedRange.EntireRow.Count
lastCol = ActiveSheet.UsedRange.Columns.Count
'ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
' "zeitergeleitet!A1" & lastrow & lastCol).CreatePivotTable TableDestination:="new", TableName:= _
' "Tableau"
ActiveWorkbook.PivotCaches.Add SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1" & lastrow & lastCol
ActiveWorkbook.PivotCaches.Item.CreatePivotTable TableDestination:= _
"new!R1C1", TableName:="Tableau", readdata:=True
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Je vous remercie de votre aide
j'ai pu glaner des infos, le problème vient du fais que workbook il prend le classeur où il y a la macro :(
j'ai encore des problème, je cherche de mon coté et je vous demande si je trouve pas moi même
voila le problème :
Workbooks(classeur2).PivotCaches.Add SourceType:=xlDatabase, SourceData:="zeitergeleitet!(R1C1:Cells(lastRow, lastCol))"
sur cette ligne, il me mets erreur 9 : l'indice n'appartient pas à la sélection
comment je peux le faire appartenir ?
j'ai encore des problème, je cherche de mon coté et je vous demande si je trouve pas moi même
voila le problème :
Workbooks(classeur2).PivotCaches.Add SourceType:=xlDatabase, SourceData:="zeitergeleitet!(R1C1:Cells(lastRow, lastCol))"
sur cette ligne, il me mets erreur 9 : l'indice n'appartient pas à la sélection
comment je peux le faire appartenir ?
Bonsoir,
Ca ne suffira peut-être pas mais tu es faché avec les " " toi...
Workbooks("classeur2") (voire même Workbooks("classeur2.xls") ?)
vue l'heure pas envie de tester ;-)
eric
Ca ne suffira peut-être pas mais tu es faché avec les " " toi...
Workbooks("classeur2") (voire même Workbooks("classeur2.xls") ?)
vue l'heure pas envie de tester ;-)
eric