erreur 2042 dans boucle

flo2002

XLDnaute Impliqué
Re bonjour à tous,
un probleme recurant dans mes fichiers cette erreur 2042.
Voici la boucle qui me pose aujourd'hui un probleme:

Dim i
For i = 1 To c21
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Delete
Next i

une idée?
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

Je pense que je viens de comprendre, arreter moi si je me trompe mais je n'ai pas de sortie....

un else goto est il envisageable?
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

En faite, a chaque fois il plante alors qu'il n' pas supprimer les "somme". En le faisant deux ou trois fois c'est bon il n'y en a plus mais il bloque toujours.
Une autre idée?
 

JeanMarie

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

Bonjour Flo

Que contient C21 ?

Pourquoi ne pas filtrer la colonne B, et supprimer en une seule fois les lignes ?

@+Jean-Marie
 

dg62

XLDnaute Accro
Re : erreur 2042 dans boucle

Bonjour Flo


Mis a part la variable C21 (comment est-elle déclarée) ta boucle fonctionne très bien.
 

Robert

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

Bonjour Flo, bonjour le forum,

Moi c'est plutôt To c21 qui me gêne... Mais par contre je n'ai pas l'erreur 2042 ??? Comme si j'avais une gestion d'erreur, ça passe directement à End Sub. Pourtant Cells(c21, 2) ça devrait planter !?
Sinon je ne pense pas que tu aies besoin de sortie. Si la condition n'est pas vérifiée le code poursuit la boucle à l'i suivant. Bizarre... Mais de toutes manières tu dois modifier c21 et déclarer i comme Integer ou Long mais dans l'état, comme Variant c'est dommage d'utiliser toute cette mémoire de stockage...
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

c21 est bien definit par : c21 = ws2.Range("B65536").End(xlUp).Row

j'ai mis:

Dim i
c21 = ws2.Range("B65536").End(xlUp).Row

For i = c21 To 1
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Delete
Next i

For i = c21 To 1
If Range("b" & i).Value Like "somme*" Then Cells(i, 2).Delete
Next i
et il ne plante plus..... mais il ne me supprime pas les "somme".
Une idée?
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

re et quand je rajoute un step -1 (qui doit vouloir dire tu remonte),

il me mets une erreur d'execution 13, incompatibilité de type.
j'ai donc:
Dim i
c21 = ws2.Range("B65536").End(xlUp).Row

For i = c21 To 1 Step -1
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Delete
Next i

merci d'avance pour toutes lumieres
 

dg62

XLDnaute Accro
Re : erreur 2042 dans boucle

re


je viens de faire iun essai avec une liste numérotée

Somme1 à Somme25 et là chose curieuse la proc efface 1 ligne sur 2. A l'exécution suivante elle recommence 1 sur deux et ainsi de suite jusque la fin.

I s'incrémente bien
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

ne faudrait il pas partir d'en haut et de faire un delet vers le haut?
 

Robert

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

Bonjour le fil, le forum,

Aucun soucis ça tourne :

Code:
Dim c21 As Long 'please
Dim i As Long 'please aussi
 
c21 = ws2.Range("B65536").End(xlUp).Row
 
For i = c21 To 1 Step -1
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Delete
Next i
Il faut justement partir d'en bas et remonter pour éviter de faire une ligne sur deux quand la condition est vérifiée deux fois de suite...
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

j'ai mis:

Dim i
c21 = ws2.Range("B65536").End(xlUp).Row

For i = 1 To c21
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Select
Selection.Delete Shift:=xlUp
Next i

et il fait le menage, de toutes les lignes en bas... mais pas les bonnes!
 

Robert

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

Le fil, le forum,

Qu'est-ce qui plante ? le code que je t'ai proposé ou le dernier que tu viens d'écrire ?
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

les deux en faite, celui que tu vien de me donner me fait l'erreur 13 qui se traduit par une erreur 2042 sur le range(...).
Quand à l'autre boucle, ca va faire dix minutes qu'elle tourne, je crois que je vais la laisser toute la nuit lol!
 

Robert

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

Le fil, le forum,

T'as essayé d'arrêter de boire ? ou de fumer peut-être...
 

dg62

XLDnaute Accro
Re : erreur 2042 dans boucle

re


une autre proc qui part du haut
Code:
Sub essai()
Dim cel As Range
Dim j As Integer
j = 1
For Each cel In Range("B2:B100") ' a modifier pour adapter a ton cas
If Range("b" & j).Value Like "Somme*" Then
Cells(j, 2).Delete
j = j - 1
Else
j = j + 1
End If
Next cel


End Sub
 

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

Le probleme est la... je ne bois pas et je fume pas. Cependant ceci ne résoud pas mon probleme, ca tourne encore...
 

Gorfael

XLDnaute Barbatruc
Re : erreur 2042 dans boucle

flo2002 a dit:
j'ai mis:

Dim i
c21 = ws2.Range("B65536").End(xlUp).Row

For i = 1 To c21
If Range("b" & i).Value Like "Somme*" Then Cells(i, 2).Select
Selection.Delete Shift:=xlUp
Next i

et il fait le menage, de toutes les lignes en bas... mais pas les bonnes!
Salut à tous
Bien ton code flo2002
je le lis :
pour i=1
si la cellule B1 = "somme*" alors la sélectionner
effacer la sélection (qui n'est pas B1, puisque b1<>"somme*")
Oups
Chez moi, celle-ci marche
PHP:
Sub Macro1()
Dim i
Dim c21 As Long
c21 = Range("B65536").End(xlUp).Row

For i = c21 To 1 Step -1
If UCase(Range("b" & i)) Like UCase("*Somme*") Then Range("b" & i).Delete

Next i
End Sub
je supprime bien la cellule sélectionnée qui contient le texte "somme"
A+
 
Dernière édition:

flo2002

XLDnaute Impliqué
Re : erreur 2042 dans boucle

Merci pour ton aide Dg62,
mais toujours le meme probleme ce qui me fait penser que le probleme vient de cette colonne B qui ne contient cependant que du texte venant de :
Dim n As Integer
Dim lign As Integer
Dim col As Collection

Set col = New Collection
For n = 1 To Range("A65536").End(xlUp).Row
On Error Resume Next
col.Add Range("A" & n), CStr(Range("A" & n))
On Error GoTo 0
Next n
lign = 1
For n = 1 To col.Count
Range("B" & lign) = col(n)
lign = lign + 1
Next n

rien d'anormal en soi.
 

Discussions similaires


Haut Bas