Probleme boucle de recherche VBA sous Excel

herod1983 -  
 herod1983 -
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.
Configuration: Windows XP
Firefox 2.0.0.12

2 réponses

  1. Fxbrg Messages postés 715 Statut Membre 199
     
    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
    1. herod1983
       
      Salut

      Super sa marche nikel.
      merci beaucoup
      a+
      0
    2. herod1983
       
      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
  2. Fxbrg Messages postés 715 Statut Membre 199
     
    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
    1. herod1983
       
      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