Boucle VBA

Résolu
jujumty77 Messages postés 10 Statut Membre -  
jujumty77 Messages postés 10 Statut Membre -
Bonjour Bonjour,

Je suis complètement nulle en VBA malgré de multiples formations.
J'arrive à savoir ce que je veux mais je n'arrive pas à le coder :
J'espère que mon explication sera assez claire :

Tant que :
Dans le classeur 'requete journaux macro', colonne B n'est pas vide
Copier la cellule d'à coté A
Aller dans le classeur 'requete générale'
Faire un controle F, et coller la valeur qu'on avait copier
Copier la cellule trouvé (qui sera dans la colonne A)
Retourner dans le classeur 'requete journaux macro'
Coller dans B
Fin de tant que.

D’après moi ça marche car j'ai réussi à créer cette macro par l'exemple mais je n'arrive pas à rajouter la boucle :'(

Ps : j'ai essayé avec une recherche V toute simple mais ça ne fonctionne pas car dans la case A du classeur requete générale, ce qui compose la cellule est plein d'espace, de virgule, et de texte inutile.

Merci D'avance.
Bonne journée

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Vous devriez mettre vos classeur a dispo, car peut-être que ca marche, mais comprends rien…….

    Site de partage: https://mon-partage.fr/
    0
    1. jujumty77 Messages postés 10 Statut Membre
       
      Bonjour ça aurait été avec plaisir mais je ne peux pas partager ces classeurs il y a des données confidentielles.
      Je vais trouver! merci quand meme :)
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jujumty77 Messages postés 10 Statut Membre
       
      pourquoi ne pas publier le fichier sans les données?
      0
    3. jujumty77 Messages postés 10 Statut Membre
       
      Je vais essayé de faire un fichier simplifier. je l'envoie ! merci beaucoup
      0
    4. jujumty77 Messages postés 10 Statut Membre
       
      https://mon-partage.fr/f/bhLMWHiN/

      Voici le lien.

      En gros je voudrais que dans la colonne B de l'onglet 'journaux' j'ai le titre de l'article (qui est dans l'onglet 'Articles').
      Par ce que en fait dans l'onglet article colonne A j'ai toutes les informations qui sont dans une seule case, alors que j'aimerais que le journal (qui correspond à la dernière partie de la case) soit dans une case à coté. Je sais qu'il existe d'autre méthode et pas uniquement le VBA mais la rechercheV (avec Vrai) me donne pas les bons résultats, et je ne connais pas la formule qui me fait prendre que les derniers caractères de la cellules (sachant qu'il n'y a jamais le même nombre de caractère).
      dites moi si je ne suis pas claire.

      Merci d'avance
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jujumty77 Messages postés 10 Statut Membre
       
      je ne vois pas la macro dans le fichier.
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, quelles formations as-tu suivies?
    je remarque que ta boucle ne s’arrête jamais: est-ce bien ce que tu souhaites?
    0
    1. jujumty77 Messages postés 10 Statut Membre
       
      Des formations en entreprises, toutes simple !
      si désolée elle est censée s’arrêter jusqu'à que B ne soit plus vide. Désolée c'est que je ne sais pas bien faire...
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jujumty77 Messages postés 10 Statut Membre
       
      montre le code que tu as déjà, ce sera plus simple de le completer.
      commencer à la première ligne du classeur 'requete journaux macro
      Tant que Dans le classeur 'requete journaux macro', colonne B n'est pas vide 
              dans le classeur 'requete générale' , faire une recherche sur base du contenu de la cellule de la colonne  A de 'requete journaux macro'
             Copier dans B de 'requete journaux macro' le contenu trouvé par la recherche
             passer à la ligne suivante dans le classeur 'requete journaux macro' 
      continuer tant que. 
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jujumty77 Messages postés 10 Statut Membre
       
      exemple de boucle:
      Sub jujumty()
      Dim nlig As Long
      Dim journaux As Worksheet, articles As Worksheet
      nlig = 1
      Set journaux = ThisWorkbook.Sheets("Journaux")
      Set articles = ThisWorkbook.Sheets("Articles")
      Do While journaux.Cells(nlig, 2) <> ""
          'faire la recherche, dans articles, du contenu de journaux.Cells(nlig, 1)
          ' journaux.Cells(nlig, 2) = la valeur issue de la recherche
          nlig = nlig + 1
      Loop
      End Sub
      0
    4. jujumty77 Messages postés 10 Statut Membre
       
      Je vous remercie !!
      Je ne sais juste pas comment programmer la partie centrale, à savoir le contrôle F suivit du copier coller dans la bonne cellule ?

      Merci d'avance
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jujumty77 Messages postés 10 Statut Membre
       
      Sub jujumty()
      Dim nlig As Long
      Dim journaux As Worksheet, articles As Worksheet
      Dim trouve As Range
      nlig = 2
      Set journaux = ThisWorkbook.Sheets("Journaux")
      Set articles = ThisWorkbook.Sheets("Articles")
      Do While journaux.Cells(nlig, 2) <> ""
          Set trouve = articles.Cells.Find(What:=journaux.Cells(nlig, 1), _
              LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
              xlNext, MatchCase:=False, SearchFormat:=False)
          If Not trouve Is Nothing Then
              journaux.Cells(nlig, 2) = trouve
          End If
          nlig = nlig + 1
      Loop
      End Sub
      0