Boucle avec condition

Bonsoir j'ai essayé de faire une formule afin de copié collé les données d'une cellule sur une autre feuille lorsque une condition est remplie. (en boucle), mais je ne comprends pas comment faire fonctionner ma formule :'(

Sub Boucle()

While Sheets(Feuil1).Range("A:A") = Sheets(Feuil2).Range("A:A")

Sheets(Feuil1).Range("B:B").Copy _

Destination:=Sheets(Feuil2).Range("B:B")

Wend

End Sub

Et petit plus mais mes connaissances sont trop limitées si la condition n'est pas remplies j'aimerai créer cette cellule sur la feuille 2.

22boucle1.xlsm (14.29 Ko)

Bonsoir,

Voir le fichier joint.

La macro et la boucle sont expliquées...

@ bientôt

LouReeD

Impressionnant j’espère être aussi capable de faire ça !un jour !! Peux tu juste m'expliquer à quoi correspond cette gestion des erreurs je te prie ?

Bonjour,

En fait ici cela ne sert à rien car si l'instruction Find ne trouve rien, la variable Trouve vaut "Nothing" et cette possibilité est gérée par une instruction "If"

Mais sinon le principe de l'arrêt de la gestion des erreurs est celui-ci :

Si vous pensez qu'une instruction va générer une erreur et que vous ne voulez pas que cela arrête le déroulement de la macro, alors au plus près de l'endroit du code où l'erreur peut se produire vous mettez :

On Error Resume Next

qui demande à VBA de continuer à "lire" le code malgré l'erreur.

Juste après la ligne où l'erreur pourrait se produire, vous réactivez la gestion des erreurs avec l'instruction :

On Error GoTo 0

Un exemple : vous avez une macro pour créer une nouvelle feuille de classeur, or vous voulez vérifier si le nom de cette feuille existe déjà. Vous pouvez tester le nom de chaque feuille existante avec le nom de la nouvelle, mais une technique avec la gestion des erreurs est "plus" rapide :

Nouveau_nom = le nom de la feuille que l'utilisateur veut créer

Dim wSheet As Worksheet
On Error Resume Next ' arrêt de la "gestion des erreurs" par VBA
Set wSheet = Sheets(Nouveau_nom) ' si la feuille "Nouveau_nom" n'existe pas alors il y a une erreur de type '9' l'indice n'appartient pas à la sélection donc sans l'instruction "on error resume next" il y aurrait arrêt du code
' dans notre cas il n'y a pas d'arrêt donc on continue
If wSheet Is Nothing ' si la feuille n'existe pas alors wSheet vaut rien, c'est là qu'on gère par nous même l'erreur du dessus
' code pour créer la feuille puisqu'elle n'existe pas
Else ' sinon
' code de message demandant de changer de nom car elle existe déjà
End If
On Error GoTo 0 ' on remet en marche la gestion des erreurs par VBA             
Set wSheet = Nothing ' on vide la variable "feuille"

Ce système de gestion d'erreur est plus rapide que le teste feuille à feuille avec une boucle, surtout s'il y a beaucoup de feuille à tester !

Cette façon de faire est une nouvelle branche de la façon de concevoir ses codes....

@ bientôt

LouReeD

Bonjour, bonjour !

Autre voie sans gestion d'erreur via la fonction de feuille de calculs ESTREF suffisante pour tester si une feuille existe déjà !

En la combinant à la puissante fonction VBA Evaluate comme par exemple dans ce code

Merci beaucoup vraiment très intéressant cette approche avec la gestion des erreurs je vais m'éditer la dessus encore un grand merci de votre aide !!!!

Mais de rien, le Forum est là pour ça

Au fait :

@ bientôt

LouReeD

Rechercher des sujets similaires à "boucle condition"