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
j'ai trouvé cette erreur et je l'ai corrigé, voila où en est mon code :
Sub Tri()
Dim lastRow, lastCol As Integer
classeur2 = Application.GetOpenFilename
If classeur2 = Null Then Exit Sub
Workbooks.Open Filename:=classeur2
Sheets(1).Name = "zeitergeleitet"
lastRow = ActiveSheet.UsedRange.EntireRow.Count
lastCol = ActiveSheet.UsedRange.Columns.Count
Sheets(2).Activate
Sheets(2).Name = "new"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1:R" & lastRow & "C" & lastCol).CreatePivotTable TableDestination:="new!R1C1", TableName:="Tableau"
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
ça a l'air de pas trop mal fonctionnait
Sub Tri()
Dim lastRow, lastCol As Integer
classeur2 = Application.GetOpenFilename
If classeur2 = Null Then Exit Sub
Workbooks.Open Filename:=classeur2
Sheets(1).Name = "zeitergeleitet"
lastRow = ActiveSheet.UsedRange.EntireRow.Count
lastCol = ActiveSheet.UsedRange.Columns.Count
Sheets(2).Activate
Sheets(2).Name = "new"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1:R" & lastRow & "C" & lastCol).CreatePivotTable TableDestination:="new!R1C1", TableName:="Tableau"
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
ça a l'air de pas trop mal fonctionnait
la prochaine étap est de définir les colonnes du tableau croisé de manière automatique, je vous préviens si j'ai un blocage
J'ai un petit problème sans que je fasse de modification dans le code
l'erreur se produit dans cette cette formule :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1:R" & lastRow & "C" & lastCol).CreatePivotTable TableDestination:="new!R1C1", TableName:="Tableau"
j'ai fait des tests pour trouver d'où venait l'erreur et j'ai pu déterminer que c'est cette partie qui gène :
TableDestination:="new!R1C1" => errur 1004, la donnée n'est pas bonne
je sus presque sur qu'il s'agit de ce problème, si je remplace "new!R1C1", il le reconnait
je peux pas utiliser le "", car cela me provoque si je relance le programme avec le même fichier
Je pense aue après ça, il n'y aura plus de problème
l'erreur se produit dans cette cette formule :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"zeitergeleitet!R1C1:R" & lastRow & "C" & lastCol).CreatePivotTable TableDestination:="new!R1C1", TableName:="Tableau"
j'ai fait des tests pour trouver d'où venait l'erreur et j'ai pu déterminer que c'est cette partie qui gène :
TableDestination:="new!R1C1" => errur 1004, la donnée n'est pas bonne
je sus presque sur qu'il s'agit de ce problème, si je remplace "new!R1C1", il le reconnait
je peux pas utiliser le "", car cela me provoque si je relance le programme avec le même fichier
Je pense aue après ça, il n'y aura plus de problème
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question