VBA Macro pour rechercher et copier

vbajecherche Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
melanie1324 Messages postés 1561 Statut Membre -
Bonjour,

j'ai un gros fichier excel et souhaiterai réaliser une macro, mais je sèche
Voici ce que je cherche à faire :

- chaque ligne de mon onglet DEPART contenant le mot TOTO en colonne J ou Z soit copiée / collée dans un nouvel onglet appelé TOTO
- chaque ligne de mon onglet DEPART contenant le mot SOLEIL en colonne J ou Z soit copiée / collée dans un nouvel onglet appelé SOLEIL
- chaque ligne de mon onglet DEPART contenant l'expression LES VACANCES en colonne J ou Z soit copiée / collée dans un nouvel onglet appelé LES VACANCES
- etc, etc.

Qui peut m'aider à créer ma macro ??
Un grand merci par avance,

Caroline

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    Lorsque l'on demande ce genre de choses, il faut être extrêmement précis.
    Pour le nom est en j ou en Z ??

    le mieux est de mettre une copie le fichier en cjoint.com

    en attendant voici le bout de code qu'il faudra peut être réadapté car j'ai pris 2 hypothèses :
    - ta colonne A est oujours renseigné
    - Si la colonne J est vide, alors on prned la valeur dans Z

    Sub x()

    i = 2
    'la macro tournera jusqu'à ce que la colonne A trouve une cellule vide
    Do While Sheets("DEPART").Cells(i, 1) <> ""

    'si la colonne j est vide, on cherche le nom dans la colonne Z
    If Sheets("DEPART").Cells(i, 10) <> "" Then
    nomfeuille = Sheets("DEPART").Cells(i, 10)
    Else
    nomfeuille = Sheets("DEPART").Cells(i, 26)
    End If

    ' on va regarder se la feuille existe déjà pour ajouter la ligne sur la feuille
    trouvve = 0
    For feuille = 1 To Sheets.Count
    If Sheets(feuille).Name = nomfeuille Then
    lignefeuille = 2
    Do While Sheets(feuille).Cells(lignefeuille, 1) <> ""
    lignefeuille = lignefeuille + 1
    Loop

    Sheets("DEPART").Rows(i).Copy Sheets(feuille).Cells(lignefeuille, 1)

    trouve = 1
    End If
    Next

    'si la feuille n'existe pas, on la créé
    If trouve = 0 Then
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = Sheets("DEPART").Cells(i, 1)
    Sheets("DEPART").Rows(1).Copy Sheets(feuille).Cells(1, 1)
    Sheets("DEPART").Rows(i).Copy Sheets(feuille).Cells(2, 1)
    End If
    i = i + 1
    Loop

    End Sub
    0
    1. vbajecherche Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci mélanie. Le mot recherché peut être en colonne J mais il peut aussi etre en colonne Z, et dès lors qu'il est dans l'une ou l'autre des colonnes, alors oui je veux sélectionner la ligne pour la mettre dans l'onglet correspondant
      Caroline
      0
    2. vbajecherche Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      Et mes colonnes J et Z sont systématiquement renseignées, donc pas de colonne vide
      0
    3. melanie1324 Messages postés 1561 Statut Membre 156
       
      alors comment sait-on qu'il doit prendre la colonne j ou Z ????
      0
    4. vbajecherche Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
       
      Si dans la ligne 1 le mot recherché TOTO apparait dans la colonne J ou s'il apparait dans la colonne Z, alors copier l'ensemble de la ligne dans un autre onglet
      Si dans la ligne Z, le mot recherché TOTO apparait dans la colonne J ou s'il apparait dans la colonne Z, alors copier l'ensemble de la ligne dans un autre onglet
      ...

      J'ai déjà créé tous mes onglets ;)
      0
    5. melanie1324 Messages postés 1561 Statut Membre 156
       
      ok alors ou se trouve le mot cherché ?
      dans une cellule, faut le demander à l'utilisateur ?
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      elle l'a posé une dizaine de fois
      0