Error1004 :select methode of range class failed
Résolu/Fermé
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
-
Modifié par mohamed_2016 le 11/08/2016 à 17:34
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016 - 15 août 2016 à 10:58
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016 - 15 août 2016 à 10:58
3 réponses
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
11 août 2016 à 17:36
11 août 2016 à 17:36
Salut,
C'est une erreur d'objet.
Soit tu l'utilises mal, soit tu ne lui donne pas ce qu'il attend.
Peux-tu poster la ligne qui te donne ce code d'erreur?
C'est une erreur d'objet.
Soit tu l'utilises mal, soit tu ne lui donne pas ce qu'il attend.
Peux-tu poster la ligne qui te donne ce code d'erreur?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 12/08/2016 à 09:26
Modifié par michel_m le 12/08/2016 à 09:26
Bonjour
Tu inventes de nouveaux objets: feuille.existe ? :-)
pour tester si trash n'est pas créé
d'autre part, lignes très bizarres
Cell non déclaré
etc.
Michel
Tu inventes de nouveaux objets: feuille.existe ? :-)
pour tester si trash n'est pas créé
With ThisWorkbook
On Error Resume Next 'appel gestionnaire d'erreur
.Sheets("Trash").Activate
If Err.Number > 0 Then 'si la feuille n'existe pas ---> n° erreur >0
'on l'ajoute
.Sheets.Add after:=Worksheets("Sheet1")
'on la renomme
.ActiveSheet.Name = "Trash"
On Error GoTo 0 ' ferme gestionnaire d'erreur
End If
'....... code
End With
d'autre part, lignes très bizarres
If Not Exist(F, tableau()) Then
tableau(b) = F
Cell non déclaré
etc.
Michel
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
Modifié par mohamed_2016 le 12/08/2016 à 11:19
Modifié par mohamed_2016 le 12/08/2016 à 11:19
Bonjour michel_m ,Bonjour le forum
Merci pour la réponse
Dans mon code ,j'ai utilié deux fonction : FeuilleExiste et Exist ,qui sont en bas du code .
Pour les lignes :
ou se trouve le problème ,,mon idée est stocker dans un tableau les numéros des lignes à supprimer sans les repeter si elle sont existantes avec F est le numéro du ligne.
Cordialement
Merci pour la réponse
Dans mon code ,j'ai utilié deux fonction : FeuilleExiste et Exist ,qui sont en bas du code .
Pour les lignes :
If Not Exist(F, tableau()) Then tableau(b) = F
ou se trouve le problème ,,mon idée est stocker dans un tableau les numéros des lignes à supprimer sans les repeter si elle sont existantes avec F est le numéro du ligne.
Cordialement
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
12 août 2016 à 11:58
12 août 2016 à 11:58
Excuse moi, je n'avais pas regardé jusqu'en bas !
au passage:
salut Frank, ca va ?
au passage:
salut Frank, ca va ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
12 août 2016 à 11:59
12 août 2016 à 11:59
Salut michel,
Oui ça va bien. Merci.
Et toi? Toujours en vacances???
Oui ça va bien. Merci.
Et toi? Toujours en vacances???
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
13 août 2016 à 08:04
13 août 2016 à 08:04
Hé oui! vacances finies hélas ! bien que pour un retraité, c'est toujours un peu les vacances :o)
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
12 août 2016 à 12:34
12 août 2016 à 12:34
Bonjour ,
Pas grave
Merci.
Pas grave
michel_m, Avez vous une idée sur le probléme que j'ai affiché
Merci.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
12 août 2016 à 11:52
12 août 2016 à 11:52
Bonjour,
ActiveRange => n'existe pas. Utiliser ActiveCell
Mais, de toutes façons, il convient de ne jamais sélectionner quoique ce soit en VBA.
On accède aux propriété des objets sans les sélectionner...
Dans ton cas, par exemple :
D18 est un exemple, je n'ai pas regardé ton code...
ActiveRange => n'existe pas. Utiliser ActiveCell
Mais, de toutes façons, il convient de ne jamais sélectionner quoique ce soit en VBA.
On accède aux propriété des objets sans les sélectionner...
Dans ton cas, par exemple :
Sheets(1).Range("D18").Offset(0, i - 1).Value = 123
D18 est un exemple, je n'ai pas regardé ton code...
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
12 août 2016 à 12:37
12 août 2016 à 12:37
Bonjour
Oui mais pourquoi je ne doit pas mettre .select
pijaku,
Oui mais pourquoi je ne doit pas mettre .select
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
12 août 2016 à 12:40
12 août 2016 à 12:40
Pour plusieurs raisons dont en voici quelques unes :
1- parce que c'est inutile,
2- parce que ça ralentit l'exécution du code,
3- parce que c'est source d'erreur 1004,
4- parce que l'on ne peux que sélectionner sur la feuille active
5- parce qu'on ne peux pas masquer les feuilles
6- parce que cela génère des problèmes dans l'utilisation des userforms...
etc...
1- parce que c'est inutile,
2- parce que ça ralentit l'exécution du code,
3- parce que c'est source d'erreur 1004,
4- parce que l'on ne peux que sélectionner sur la feuille active
5- parce qu'on ne peux pas masquer les feuilles
6- parce que cela génère des problèmes dans l'utilisation des userforms...
etc...
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
Modifié par mohamed_2016 le 12/08/2016 à 12:46
Modifié par mohamed_2016 le 12/08/2016 à 12:46
Merci pijaku ,
Oui c clair ce que tu as dit , mais dans notre cas ,comment décaler une range sans sélectionner ?
c la début du code
Oui c clair ce que tu as dit , mais dans notre cas ,comment décaler une range sans sélectionner ?
c la début du code
For i = 1 To 4 Range("J4", "J" & DL).Offset(0, i - 1).Select Selection.SpecialCells(xlCellTypeVisible).Select k = Cells(1, i + 9).Value j = Cells(2, i + 9).Value If Range("range").Offset(0, i).Value = "set" Then For Each Cell In Selection 'ActiveCell.Select If (Cell.Value > k) And (Cell.Value < j) Then Cell.Value = Cell.Value ' la ligne de la cellule active Else F = Cell.Row
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
12 août 2016 à 12:46
12 août 2016 à 12:46
Tu disposes de ton Range initial (mettons "B13") et tu décales avec Offset(Ligne, Colonne)...
mohamed_2016
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
12 août 2016 à 12:52
12 août 2016 à 12:52
c la début du code
For i = 1 To 4 Range("J4", "J" & DL).Offset(0, i - 1).Select Selection.SpecialCells(xlCellTypeVisible).Select k = Cells(1, i + 9).Value j = Cells(2, i + 9).Value If Range("range").Offset(0, i).Value = "set" Then For Each Cell In Selection 'ActiveCell.Select If (Cell.Value > k) And (Cell.Value < j) Then Cell.Value = Cell.Value ' la ligne de la cellule active Else F = Cell.Row
12 août 2016 à 10:40
Merci pour la reponse
Voici la ligne qui donne l'erreur :
Cordialement