[Catégorie modifiée VB6 - VBA] Ma boucle se bloque apres environ 150 boucle

kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010 - 18 mai 2010 à 17:27
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010 - 24 mai 2010 à 17:50
Bonjour,

Je suis débutant en VBA et je cherche une solution depuis plusieurs jours.

Mon problème est le suivant :
J'ai un fichier avec des données en colone H. Dans chacune des cellules j'ai un nombre important de chaines de caractères (entre 0 et 4000).

j'ai fais la procedure suivante qui me change des chaines par des autres:

ub CHANGE_MOT()

Dim z As Range

'Selectionne la colonne H
ActiveSheet.Range("H1:H2000").Select

Dim p As String

'Pour chaque cellule de la colonne
For Each z In Selection

'récupération de la valeur
p = z.Value

'remplacement de * par *
p = Replace(p, "", "$$$")
z.Value = p
Next

End Sub


Le problème c'est que je ne peux pas faire toute ma feuille d'un coup parce que ca à tendence a me faire l'erreure suivante :

Erreur d'execution '1004':
Erreur définie par l'application ou par l'objet


Quand je debug il me met " z.Value = p " en surbrillance.

Peut-on remedier a ce problème de façon a faire la feuille en entier ??

Merci d'avance à tous

13 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 mai 2010 à 18:52
Salut
Au moment de l'erreur, qu'y a t-il dans "z" ?
Regarde sur quelle ligne tu te trouves.

Lorsque tu as des rafales de modifs à faire, il vaut mieux demander à Excel d'arrêter de recalculer toutes les cellules lors des changements :
    Application.Calculation = xlManual  ' Stoppe les auto-calculs
    Application.Calculation = xlAutomatic  ' Relance les Auto-calculs
    Calculate  ' Refait les calculs

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
19 mai 2010 à 14:10
Merci pour la réponse Jack, je vais regarder mais sauf erreur il s'agit de la ligne 183 (plus précisement la cellule H183).
Malheureusement je ne suis pas sur de bien comprendre ta réponse.

Je dois rajouter ce bout de code entre chaque cellule ??

Sub CHANGE_MOT()

Dim z As Range

'Selectionne la colonne H
ActiveSheet.Range("H1:H2000").Select

Dim p As String

'Pour chaque cellule de la colonne
For Each z In Selection

'récupération de la valeur
p = z.Value

Application.Calculation = xlManual ' Stoppe les auto-calculs

'remplacement de * par *
p = Replace(p, "", "$$$")
z.Value = p

Application.Calculation = xlAutomatic ' Relance les Auto-calculs
Calculate ' Refait les calculs

Next

End Sub


Voila le code si j'ai bien compris ? mais la je suis au taf et je ne peux malheureusement pas tester.

Je regarde des que je peux et te tiens au courrant.
Merci encore
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 12:32
Je suis ennuyé de vous embéter avec cela mais ça ne marche toujours pas. Il bloque toujours au bout de 150 lignes environs
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
20 mai 2010 à 13:19
Salut
J'ai essayé ton macro il fontionne correctement
j'ai rempli plus de 3000 cells A1 à A3000 et chaque cell contient plus de 5000 charactères
Il n'y a pas eu de problème
Mais si il s'arrete à la cellule H183 pour voir si c'est vraiment le contenu qui cause un problème essayes de copier la cell H183
plus haut à H1 tout en déplaçant le tout vers le
bas.Ensuite execute change mot
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 13:49
Re salut à tous,

Je crois que j'ai soulevé le problème mais je n'arrive pas à comprendre pourquoi.
En fait dès que la cellule commence par le signe égale (=) ca bug.
J'ai fais l'essaisavec ('=) mais rien à faire. si je supprime le (=) pas de problème ça passe.

Mon soucis c'est que je désire garder les cellules tel quel
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
20 mai 2010 à 14:21
Salut
je pense que le signe = fait comprendre à excel
que la cellule contient une fonction fx et non
un string
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
20 mai 2010 à 14:27
Ca m'étonne que ça ne fonctionne pas en concaténant un ' avant le = parce que chez moi, ça fonctionne.

z.Value = "'" & p

Molenn
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 14:43
Ok Molenn,
Je n'ai pas fais comme ça pour mon test, j'ai fais la modif directement dans la cellule..

No comment...

Merci je vais tester mais si tu me dis que ça fonctionne je te félicite déjà.

Je vous tiens au courrant.

Kikoo
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 56
20 mai 2010 à 14:52
à Molenn
tu as écrit ça
For Each z In Selection
p = z.Value
z.Value = "'" & p
Next

chez moi ça ne marche pas runtime error 13 type
mismatch
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 15:29
Molenn,

100% de réussite. Tu es excellent. Merci beaucoup.

Kikoo
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
20 mai 2010 à 15:44
Ca y est, j'ai un nouveau soucis... je ne veux pas avoir le ( ' ) au debut de ma cellule. y a-t-il une possibilité pour l'enlever au final??
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
21 mai 2010 à 03:18
Ca dépend de tes besoins. Mais si ça ne pose pas de pbs pour tous tes autres cas, passe le format de la cellule (de la colonne même probablement) en format Texte. Ton = sera accepté.
Par contre, ça pourra te poser des pbs si tu veux du numérique ou une date. Enfin, ce sont tes données, à toi de voir :)

Molenn
0
kikooisachef Messages postés 15 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 30 juillet 2010
24 mai 2010 à 17:50
En fait j'ai regardé et j'ai modiffier tous les signes = en virgule et c'est tout bon.

Je te remercie

Kikoo
0