Gestions des erreurs dans une boucle "While"

Salut a tous,

Apres des heures et des heures de recherche, je n ai malheureusement pas reussi a trouver un solution a mon probleme. C est pourquoi je fais mon premier post sur ce forum :D

Premierement, mon but est de copier des tonnes de donnes (onglet RCM SAV) et de les compactes sur un autre onglet (Curve2). De ce fait, ligne par ligne je selectionne uniquement les valeurs et les copies lignes par lignes sur l onglet Curve2.

Premier probleme, lorsqu une de ces lignes ne possede pas de valeur, l erreur 1004 apparait : No cells was found. Pour pallier, a ce probleme, j ai essaye de faire une gestion des erreurs qui fonctionne uniquement pour la premiere erreur trouvee mais ne prend pas en compte plus d une erreur et le message d erreur apparait a nouveau.

Quelqu un pour m aiguiller pour integrer les gestions d erreur dans une boucle while ?? :D

Voici le code :
i = 8

j = 3

While i <= 50

On Error GoTo Incrementation
Sheets("RCM SAV").range("V" & i & ":BVZ" & i).SpecialCells(xlCellTypeConstants, 1).Copy
Sheets("Curve2").range("D" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
Incrementation:
On Error GoTo 0
i = i + 1
j = j + 1
Wend

Merci d avance pour votre aide :D je n arrive pas a revenir en texte normal :D

Bonjour,

Difficile de voir la boucle avec ce petit bout de code.

Mais pourquoi pas juste :

On Error Resume Next

Si il ne trouve pas il passe au suivant...

Bonjour le fil, bienvenu Alex_is, bonjour le forum,

Peut-être comme ça :

On Error Resume Next
Sheets("RCM SAV").range("V" & i & ":BVZ" & i).SpecialCells(xlCellTypeConstants, 1).Copy
If Err > 0 then
   Err.Clear
   i = i + 1
   j = j +1
End If
On Error GoTo 0
Sheets("Curve2").range("D" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

Mais je pense que si tu nous avais donné le code complet on aurait répondu différemment...

Bonjour, merci a vous deux pour votre reponse. je vais essayer vos deux propositions et je reviens vers vous :)

Merci pour cette reactive !

Hello,

J ai enfin trouve solution a mon probleme grace a vous en ayant un peu modifie le code sinon cela donne une boucle sans fin.

While i <= 94 'NB de ligne  

On Error Resume Next 

Sheets("RCM SAV").range("OM" & i & ":BVZ" & i).SpecialCells(xlCellTypeConstants, 1).Copy

 If Err > 0 Then 

 Err.Clear 

 i = i + 1 

j = j + 1 Else 

 Sheets("Curve2").range("D" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False i = i + 1 j = j + 1 

 End If 

 Wend

Merci beaucoup votre aide :D

Bonjour,

Je me demande même si la boucle est nécessaire dans votre cas.

Que donnerait quelque chose comme ça :

Sub a()

Dim rspe as range

Set rspe = Sheets("RCM SAV").range("V8:BVZ94").SpecialCells(xlCellTypeConstants, 1)

Sheets("Curve2").range("D3").value = rspe.value

end sub

Cdlt,

Bonjour 3GB,Tout d abord merci pour ta proposition.

J ai cree un fichier afin de visualiser un exemple plus simple mais lorsque je lance le code rien ne se passe. Uniquement la copie de la premiere valeur en haut a gauche du tableau

A savoir les specificites des donnees a copier , il y a des lignes vides et des N/A j ai donc simule l exemple de la sorte.Je joins le fichier si vous voulez jetez un coup d oeil :)

Neanmoins je suis interesse par une solution beaucoup plus rapide comme celle ci :)

Bonjour le fil, bonjour le forum,

Peut-être comme ça :

Sub a()
Dim rspe As Range
Dim CEL As Range

Set rspe = Sheets("Sheet1").Range("B5:V11").SpecialCells(xlCellTypeConstants, 1)
For Each CEL In rspe
    I = I + 1
    Sheets("Sheet2").Cells(I, 1).Value = CEL.Value
Next CEL
End Sub

Bonjour …

Toujours fidèle aux Tableaux (ListObjects), le tableau source étant nommé BD et le tableau de réception dans l’autre onglet Tb, dans la fenêtre des codes de celui-ci :

Private Sub Worksheet_Activate()
    If Application.CountA([Tb]) > 0 Then [Tb].Delete
    [Bd].Copy [Tb]
    [Tb].AutoFilter 2, Criteria1:="=#N/A", Operator:=xlOr, Criteria2:="="
    [Tb].EntireRow.Delete
    [Tb].AutoFilter
End Sub

Nota : on peut aussi traiter le problème avec des tableaux VBA

Bonjour à tous,

Finalement, j'ai parlé un peu vite... Du fait de la discontinuité de la range à copier, j'ai l'impression que le boucle s'impose finalement. Malgré tous mes essais, je ne parviens pas à copier coller, de quelque sorte que ce soit sans boucle ou sans scinder l'opération.

L'idéal aurait été d'avoir un tableau qui parvient à stocker toutes les valeurs de rspe sans manipulation particulière pour les coller ensuite. Mais j'ai l'impression que ce n'est pas possible sans boucle...

Rechercher des sujets similaires à "gestions erreurs boucle while"