la méthode range de l'objet worksheet a echoué

FoLKeN

XLDnaute Junior
Bonjour à tous,

Je viens ici très rapidement pour vous demander une explication. J'ai tapé cette ligne (en simplifié):
Set MyRange = Sheets("Truc").Range(Cells(1, 1), Cells(2, 2))

Et lorsque je lance la macro, le débogueur me met au niveau de cette ligne :
la méthode 'Range' de l'objet '_Worksheet' a echoué

D'habitude cette ligne de code, dans d'autres macro d'autres fichiers, fonctionne très bien.

Avez-vous une idée ?
Merci d'avance !
FoLKeN
 

2passage

XLDnaute Impliqué
Re : la méthode range de l'objet worksheet a echoué

Bonjour,

je te confirme que la syntaxe est bonne, donc c'est un problème de contenu. Pêle mêle, les problèmes possibles : mauvais type de MyRange, faute de frappe dans le nom de feuille, rowindex ou columnindex invalide pour les "cells", etc...
le fichier dans lequel ça plante est trop gros j'imagine ?
 

FoLKeN

XLDnaute Junior
Re : la méthode range de l'objet worksheet a echoué

Ouaip, j'ai bel et bien fait tout ca, ainsi que tout vérifié, il n'y a pas de souci avec mon code.

Ce qui est marrant, c'est que si je mets la commande dans un if, mais dont la clause n'est pas vérifiée, que je mets un break après, ben lorsque je mets ma souris sur la ligne de cmd qui est supposée déconner, il détecte bien la valeur du contenu dans le cas où c'est un Range(Cells(1,1),Cells(1,1)) par exemple (bien que ca soit inutile, mais c'est juste pour l'exemple et pour test).

J'ai joint le fichier, étant donné que je viens de commencer le truc, il n'est pas gros encore. Appuyez sur le bouton et dites-moi si ca bug chez vous. Normalement c'est à la ligne:
Set NameArea = wsFormat.Range(Cells(FirstLineFormat, NameCol), Cells(LastLineFormat, NameCol))

Mais aussi à la suivante.
J'espère que vous trouverez quelque chose... J'en ai un peu marre, ca m'empeche d'avancer :-(
 

Pièces jointes

  • Tool for UDS.zip
    21.9 KB · Affichages: 81

Chloulou

XLDnaute Occasionnel
Re : la méthode range de l'objet worksheet a echoué

j'ai trouvé!!!!!!!!!
enfi je crois...
pour ma part, vu qu'on avait le même problème, apparemment, il faut en fait activer la feuille dans laquelle ta RANGE se trouve même si tu a précisé Worksheets("Tafeuille").RANGE(....

pour moi c'était ca
 

Chloulou

XLDnaute Occasionnel
Re : la méthode range de l'objet worksheet a echoué

Si je peux me permettre de relancer le débat,
j'ai une question qui est affiliée à la tienne :
comment faire, si je suis obligé d'activer ma feuille pour utiliser
Code:
Set MyRange = Sheets("Truc").Range(Cells(1, 1), Cells(2, 2))
alors que je ne veux pas que la feuille soit affichée.

de même je dois effectuer une macro de mise en forme de cette feuille (bordure, police...). Mais je ne veux toujours pas que l'utilisateur voit les modifs en train de se faire.
Code:
    With Worksheets("RecapImp").Range(Cells(1, 1), Cells(1, LastColumn))
        
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).Weight = xlMedium
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Bold = True
        .Font.Name = "Arial"
        .Font.Size = 12
        
    End With
ne fonctionne que si la feuille est active
Quelle est l'une des solutions à ce pb, sachant que utiliser Worksheets("").visible=false ne fonctionne pas si on active avant la feuille?
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : la méthode range de l'objet worksheet a echoué

Bonjour Chloulou, Folken

je pense qu'il ne faut pas forcement selectionner la feuille, il aurait peut fallu mettre :

Code:
Set myrange = Sheets("Feuil1").Range(Cells(1, 1).Address, Cells(2, 2).Address)

ou encore :

Code:
Set myrange = Sheets("Feuil1").Range("A1:B2")

pour empêcher de voir le déroulement de la macro mettre ceci en début de procédure :

Code:
Application.ScreenUpdating = False

à remettre à "True" à la fin.

bonne fin d'après midi
@+
 

Chloulou

XLDnaute Occasionnel
Re : la méthode range de l'objet worksheet a echoué

Merci Pierrot pour l'astcue du :
Code:
Application.ScreenUpdating = False
ca marche au poil, et la feuille active n'est même plus affichée. Ca fait plusieurs fois que tu me sors de tracas comme celui la, en quelques jours, MERCI!
 

mathspountz

XLDnaute Nouveau
Re : la méthode range de l'objet worksheet a echoué

Bonjour tout le monde,

Je me permets de relancer le sujet car j'ai un problème du même type mais j'aimerais ne pas avoir à utiliser activate.
En effet j'essaie d'optimiser mes codes en ce moment. Je les ai écrits quand je découvrais le vba et je me rends compte maintenant des erreurs que j'ai pu commettre.

J'ai donc ceci :

Code:
Sub Macro1()

    Dim PARA, QARA As Worksheet
    Set PARA = Worksheets("PARAMETRES")
    Set QARA = Worksheets("PREPA")
    Dim Periodes, Prod As Integer
    Sheets("PREPA").Cells.Delete
    Periodes = WorksheetFunction.CountA(Sheets("Parametres").Columns("D:D")) - 1
    Prod = WorksheetFunction.CountA(Sheets("Parametres").Columns("A:A")) - 1
        For i = 0 To Prod - 1
        Sheets("PARAMETRES").Cells(i + 3, 1).Copy
            Sheets("PREPA").Select
            Range(Cells(i * Periodes + 1, 6), Cells((i + 1) * Periodes, 6)).Select
            ActiveSheet.Paste
        Next i

End Sub

Que j'ai voulu optimiser en ceci (le copier/coller surtout, je mets le reste au cas où ça vous aide) :

Code:
Sub Macro1()

    Dim PARA, QARA As Worksheet
    Set PARA = Worksheets("PARAMETRES")
    Set QARA = Worksheets("PREPA")
    Dim Periodes, Prod As Integer
    Sheets("PREPA").Cells.Delete
    Periodes = WorksheetFunction.CountA(Sheets("Parametres").Columns("D:D")) - 1
    Prod = WorksheetFunction.CountA(Sheets("Parametres").Columns("A:A")) - 1
        For i = 0 To Prod - 1
        PARA.Cells(i + 3, 1).Value = QARA.Range(Cells(i * Periodes + 1, 6), Cells((i + 1) * Periodes, 6)).Value
        Next i

End Sub

Le but c'est surtout de ne plus utiliser de select ni d'activate. Car c'est une toute petite partie de mon code qui est assez gros. Mais quand je lance rien que ce petit bout, je tombe sur la fameuse erreur 1004 : la méthode range de l'objet worksheets a échoué... (alors que ça marchait très bien avec les select).

Quel est le problème ?

Précision : je suis en excel 2003, et j'ai bien vérifié le nom des feuilles et s'il y avait des cellules fusionnées dans les plages traitées...

Y aurait-il une bonne ame pour me montrer la voix ?
 

Pierrot93

XLDnaute Barbatruc
Re : la méthode range de l'objet worksheet a echoué

Bonjour,

A priori manque les feuilles au niveau des "cells" :
Code:
PARA.Cells(i + 3, 1).Value = QARA.Range(QARA.Cells(i * Periodes + 1, 6), QARA.Cells((i + 1) * Periodes, 6)).Value
bonne fin d'après midi
@+
 

Samson

XLDnaute Nouveau
Si je peux me permettre de relancer le débat vu que j'ai le même problème.
je viens de me lancer dans VBA et je n'arrive pas à régler ce problème.

j'ai 2 feuilles, la 1ère a 3 colonnes : Activité, noms des responsables, mails des responsables.

Et la 2ieme feuille 2 colonnes : Nom responsable, mail responsable. ici on liste chaque agent et son mail

Dans la 1ere on répertorie les différentes activités et leurs différents responsables.
une activité peut avoir plusieurs responsables, onc plusieurs mails à affecter sur la 2ième colonne (mails des responsables).

j'ai pensé à faire un macro qui affecte automatiquement à la seconde colonne les mails, mais ceci me renvoie à cette erreur.

Si vous pouvez m'aider.
Merci à vous!
VB:
Sub affecterMail()
Dim xx As Integer, xy As Integer
Dim i As Integer, j As Integer
Dim valeurMailCv As String, valeurMailList As String

Set cv = ThisWorkbook.Sheets("Completed_version")
Set wbl = ThisWorkbook.Sheets("Lists")

Application.ScreenUpdating = False

xy = Application.CountA(wbl.Range("A2:A15"))
xx = Application.CountA(cv.Range("A2:A100"))
xx = xx + 5

For i = 2 To xy
valeurMailList = wbl.Range("A" & i).Value
For j = 7 To xx
valeurMailCv = cv.Range("A" & j).Value
If InStr(1, valeurMailCv, valeurMailList) Then

cv.Range("B" & j) = wbl.Range("B" & i).Value & ";"
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Le fond du problème c'est que vous ne pouvez pas formez une plage d'un objet Worksheet à partir de cellules d'un autre objet Worksheet.
Feuil1.Range(ActiveSheet.Cells(etc. ça ne peut pas passer, sauf si Feuil1 représente aussi la feuille active. Rappel: Si l'objet Worksheet concerné par une méthode Cells n'est pas précisé, il assume ActiveSheet.
 

chagor

XLDnaute Nouveau
Bonjour ,

Est ce qu'il y a une personne qui peux m'aider stp
ci-dessous le programme et le problème toujours apparait pour la ligne :
For I = I To Sheets(I).Range("I" & Rows.Count).End(xlUp).Row + 35000


Programme ci-dessous :

Sub Initiale()

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col_L As Range

'vérifier si le changement est sur la colonne Initial k

For I = I To Sheets(I).Range("I" & Rows.Count).End(xlUp).Row + 35000
If Cells(I, 12) = "" And Cells(I, 11) <> "" Then Cells(I, 12) = Date
If Cells(I, 11) = "" And Cells(I, 12) <> "" Then Cells(I, 12) = ""
Next I

End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote