Probleme boucle de recherche VBA sous Excel

Fermé
herod1983 - 29 févr. 2008 à 15:07
 herod1983 - 4 mars 2008 à 10:41
Bonjour,

Je suis novice en VBA sous Excel

Voila j'ai un userform avec des text et combobox qui renseignent une page avec des cellules précise.

Nous dirons sur cette page feuil1 cell A1 A2 et A3 que c'est la demande d'un travail à faire.
Ses cellules se copient aussi sur une autre page feuil2 une fois le userform fermé sur B1 B2 et B3 cela est en quelque sorte une synthèse.

Mon problème le voici vu qu'il y aura plusieurs travaux et donc plusieurs synthèses de ses travaux.
J'aimerais une fois le travail terminé quand je l'efface créer une boucle de recherche qui va trouver la copie dans la feuil2 de synthèse et l'effacer aussi.

J'ai bien trouvé un moyen en gardant chaque synthèse dans une ligne et donc l'effacer par rapport à son positionnement dans la feuille mais, vu que j'ai mis une liste qui permet de les classer par dates, la position change tous le temps.

j'espère que j'ai été assez clair sur ma demande, et je vous remercie d'avance pour votre aide.
A voir également:

2 réponses

Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
29 févr. 2008 à 15:54
Bonjour,

Ce serait plus simple avec un fichier exemple, si tu peux le joindre...

Dans le principe : donner à une variable la valeur de ton travail dans la feuille 1, avant de l'effacer, faire ensuite une recherche dans la feuille 2, quand tu trouves la même occurence, tu effaces la ligne entière dans la feuille 2...

A adapter : (il faut activer la feuille 2, etc...)

dim mavar
mavar=feuil1.A1
dim i
for i=1 to feuil2.usedrange.rows.count (là tu balayes toute la feuille)
if feuil2.cells(i,1)=mavar then
rows(i).delete
next

:-)
0
Salut

Super sa marche nikel.
merci beaucoup
a+
0
Bonjour

J'ai encore un problème dans ce code que j'ai recu:

dim mavar
mavar=feuil1.A1
dim i
for i=1 to feuil2.usedrange.rows.count (là tu balayes toute la feuille)
if feuil2.cells(i,1)=mavar then
rows(i).delete
next

La recherche est basé que sur la première cellule ce qui m'en efface plusieurs au lieu de prendre en compte toutes les cellules de la ligne.

J'aimerai donc je le rappel, que quand j'efface des cellules sélectionnés dans feuil1 il recherche la ligne dans feuill2 avec les mêmes valeurs dans feuill2 que celle de feuil1 et les effaces sa devrait donner ceci, le problème que j'ai et que je n'arrive pas a dire que i doit prendre en cours cells( i, 1) cells( i, 2 )cells (i, 3 )etc

sheets("feuil1").activate

dim mavar as string

mavar=feuil1.A5.B5.C5.D5

sheets("feuil2").activate

for i=1 to feuil2.usedrange.rows.count

if feuil2.cells(i, 1) + cells(i, 2) + cells(i,3) + cells(i, 4) = mavar then rows(i).ClearContents

next i

Merci d'avance pour votre aide
a+
0
Fxbrg Messages postés 710 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 199
2 mars 2008 à 19:02
Pas clair :-)

Tu veux faire une recherche sur plusieurs cellules? Ou bien quand tu trouves une correspondance tu veux n'effacer que quelques cellules au lieu de toute une ligne?

Si je comprends bien...

mavar=feuil1.A5 & feuil1.B5 & feuil1.C5 & feuil1.D5 (le signe & colle tes cellules les unes derrières les autres, une concaténation pour les intimes... lol)

ensuite dans la boucle

if feuil2.cells(i,1) & feuil2.cells(i,2) & feuil2.cells(i,3) & feuil2.cells(i,4)=mavar then...

:-)
0
Salut

désolé pour la mauvaise clarté de mon message précédent en fait c'était bien faire la recherche sur plusieurs cellules et effacer la ligne merci pour ton aide.
maintenant c'est bon sa fonctionne super
a+
herod1983
0