Boucle VBA

Résolu
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. Bonjour,

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

    Site de partage: https://mon-partage.fr/
    1. 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 :)
    2. Contributeur
      @jujumty77pourquoi ne pas publier le fichier sans les données?
    3. Je vais essayé de faire un fichier simplifier. je l'envoie ! merci beaucoup
    4. 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
    5. Contributeur
      @jujumty77je ne vois pas la macro dans le fichier.
  2. Contributeur
    bonjour, quelles formations as-tu suivies?
    je remarque que ta boucle ne s’arrête jamais: est-ce bien ce que tu souhaites?
    1. 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...
    2. Contributeur
      @jujumty77montre 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. 
    3. Contributeur
      @jujumty77exemple 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
    4. 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
    5. Contributeur
      @jujumty77
      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