Erreur d'execution 1004

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

problemes

XLDnaute Nouveau
Bonjour à tous,

Grâce a une macro, je souhaite rechercher la ligne qui correspond à un "test" effectué à une "periode" précise pour modifier la colonne C (toujours de cette ligne).
Mais lorsque j'exécute mon programme sous VBA (sous XP), j'ai le message suivant qui s'affiche "Erreur d'éxécution 1004" - La méthode Range _Global a échoué".

Voici un extrait de mon code, Pouvez vous m'aider, ?

Dim test As String
Dim periode As String
Dim j As Long

test = "saut en hauteur"
periode = "20081206"

j = 2
While Not Range("A" & j) = test --> 😡 ça bloque la...
j = j + 1
Wend
While Not Range("B" & j) = periode
j = j + 1
Wend

Range("C" & j & "").Select
etc........

Pour info : Il y a un classement par test et par periode au début de ma macro.... et j est appliqué sur un fichier allant des colonnes A à D et des lignes 1 à 30 000.

Un fichier est disponible mais je ne peux pas le mettre sur cjoint 😱

Par avance merci, merci et encore merci 😀😀😀
 
Re : Erreur d'execution 1004

Bonjour,

Il faudrait peut-être essayer :

While Not Range("A" & j).value = test

(Range("A" & j) c'est un Range et Test c'est une String alors que Range("A" & j).value c'est une String si la cellule contient du texte)

Cordialement
 
Re : Erreur d'execution 1004

Bonjour,

Chez moi, ca plante quand je depasse 65536.
65536 est la limite du nombre de ligne dans Excel (version 2002 en tous les cas).
Il faudrait modifier ton Test.
Et meme peut etre eviter de boucler sur 65536 lignes ....

Tu peux essayer ce code :

Sub Tempo()
test = "saut en hauteur"
periode = "20081206"
With Worksheets(1).Columns(1)
Set c = .Find(test)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set c = .FindNext(c)
MsgBox c.Address 'Mettre ici le code à executer si on trouve "test"
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub

Voir fichier joint
 

Pièces jointes

Dernière édition:
Re : Erreur d'execution 1004

Merci beaucoup mécano41 de ton aide...
Mais même en mettant . value, j'ai toujours l'erreur d'execution .....
encore une fois merci pour ton aide

Merci aussi à Catrice pour tes explications seulement je n'arrive pas à appliquer ton code dans ma macro... Peux tu m'aider un peu plus?
Car j'avoue avoir quelques notions mais la... je suis complètement perdue....😀😀😀

problemes
 
Re : Erreur d'execution 1004

Re,

Il faudrait que tu donnes plus de détails sur ce qui doit se passer quand la macro trouve l'occurence cherchée ou poster un petit bout de fichier. Les 10 1ere lignes suffisent.

Dans la macro, là où il y a "MsgBox c.Address" il faut mettre le code, l'action à effecturer quand on a trouvé la cellule.
L'exemple donné boucle sur les X occurences contenant la chaine de caracteres contenue dans "test".
Suivant si elle existe 1 fois, plusieurs fois ou peut ne pas exister, on peut adapter le code ...
 
Re : Erreur d'execution 1004

Catrice,

Je te remercie énormément pour ton implication car j'avoue que je progresse très lentement sur ce dossier.....

Suite à ton message, est ce que je peux t'envoyer ma macro avec un fichier.. 😀 Je pense que ca sera plus simple pour moi 😀...


problemes
 
en attendant

Je te poste une partie de ma macro avec quelques explications :

J'ai 2 onglets "epreuve" et "historic"
But : accordé des points aux tests effectués à une periode précise.

Dans "epreuve" : je mets dans un tableau le ou les test(s) avec la période et le nombre de point accordés (en plus ou en moins).
A noter que ma macro ne fonctionne pas si tous les elements ne sont pas renseignées
De plus, il peut y avoir le même test à des dates différentes.
Si le test n'existe pas à la date marque - "non trouve" s'affiche
Ma macro se lance des que j'appuie sur un bouton "valider"

Dans "historic" : ensemble des tests effectués par période avec les points (1 à 30 000 lignes environs)

Et pour finir, voici quelques lignes en plus de ma macro....

Sub Mettreajourhistoric2()
Dim test As String
Dim periode As String
Dim point As Long
Dim i As Long
Dim j As Long



'Recherche du premier element vide
Sheets("epreuve").Select
i = CLng(6)

While Not Range("A" & i) = ""
i = i + 1
Wend


'Tant que l on atteint pas le titre "TESTS"
While Not i = 6

Sheets("epreuve").Select

'Selection du l'test du dessous
i = i - 1


'Si l test est non trouvé
If Range("G" & i).Value = "non trouvé" Then
'Effacer les historic
Range("A" & i) = ""
Range("B" & i) = ""
Range("C" & i) = ""

Else
'Memorisation des valeurs
test = Range("A" & i)
point = Range("B" & i)
periode = Range("C" & i)


'selection de l historic
Sheets("historic").Select

' Trouver l test et la periode ancienne methode
' j = 2

' If Not Range("A" & j).Value = test Then
' j = j + 1
' End If

' If Not Range("B" & j).Value = periode Then
' j = j + 1
' End If


' Trouver l test et la periode nouvelle methode

With Worksheets(1).Columns(1)
Set c = .Find(test)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set c = .FindNext(c)
MsgBox c.Address

' 😕😕 Comment sélectionner de la colonne suivante pour voir si la période est la bonne ?


Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With





' Selectionner la colonne
' Range("D" & j & "").Select

'Modifier les points
'Range("D" & j) = Range("D" & j) - point


' End If

End If
Wend

End Sub


en esperant que se soit un peu plus clair. 😛
problemes
 
Re : Erreur d'execution 1004

Le meilleur ami de "merci" est "beaucoup"

Donc un Grand merci pour votre aide car j'ai enfin résolu ce problème grâcxe aux codes de "Catrice" que j'ai testé plus de milles et une façons possible. 😱

reste plus qu'a recoller tous les cheveux que j'ai arraché.😀😀😀


milles merci encore une fois pour votre aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
707
Réponses
1
Affichages
265
Réponses
3
Affichages
774
Réponses
4
Affichages
672
Réponses
6
Affichages
643
Retour