[Catégorie modifiée VB6 - VBA] Ma boucle se bloque apres environ 150 boucle
kikooisachef
Messages postés15Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention30 juillet 2010
-
18 mai 2010 à 17:27
kikooisachef
Messages postés15Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention30 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 ??
kikooisachef
Messages postés15Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention30 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
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
kikooisachef
Messages postés15Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention30 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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 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 :)