Poblème avec macro

massimo888 Messages postés 209 Statut Membre -  
massimo888 Messages postés 209 Statut Membre -
Bonjour,
J'ai une macro qui fait des copier coller d'un tableau 1 à un autre (tableau 2) et elle supprime les doublons.
Je suis pas trop calé niveau Macro du coup j'ai fais avec mes moyens.
Je copie le tableau 1 une première fois selon un critère pour sélectionner les lignes voulues et je colle dans le tableau2 , ensuite je recopie encore une fois le tableau 1 j'insère une ligne vide et je colle dedans puis je supprime les doublons comme ça je garde les valeurs en un seul exemplaire.

Voici mon code.

///

Sub Macro()
    Sheets("Feuil2").Activate
    [A65536].End(xlUp).Select    'selection de la derniere céllule non vide
   ' ActiveCell.Offset(1, 0).Select  ' insertion d'une ligne en bas
    Sheets("CS").Activate
    ActiveSheet.ListObjects("Tableau_Lancer_la_requête_à_partir_de_CS").Range. _
    AutoFilter Field:=23, Criteria1:="Cloturé"
    Range("Tableau_Lancer_la_requête_à_partir_de_CS").Select
    Selection.Copy
    Sheets("Feuil2").Select
    ActiveSheet.Paste
    
    
    Sheets("Feuil2").Activate
    [A65536].End(xlUp).Select    'selection de la derniere céllule non vide
    ActiveCell.Offset(1, 0).Select  ' insertion d'une ligne en bas
    Sheets("CS").Activate
    ActiveSheet.ListObjects("Tableau_Lancer_la_requête_à_partir_de_CS").Range. _
    AutoFilter Field:=23, Criteria1:="Cloturé"
    Range("Tableau_Lancer_la_requête_à_partir_de_CS").Select
    Selection.Copy
    Sheets("Feuil2").Select
    ActiveSheet.Paste
    
    
    
     Range("Tableau2").Select
    ActiveSheet.Range("Tableau2").RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
        5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23), Header:=xlYes 

end sub


Merci pour votre aide

7 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Avec votre fichier comme exemple ce serait mieux pour comprendre, le mettre sur https://www.cjoint.com/ et poster le lien !
    0
  2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Merci pour le fichier.
    Ce que vous avez réalisé est une chose, mais que voulez-vous avoir comme résultat.... ?
    En plus votre code ne si trouve pas...ou est-il ?

    0
    1. massimo888 Messages postés 209 Statut Membre
       
      Si le code est dedans. Il faut juste activer le contenu ou la modification.
      Ce que je veux c'est de copier les données d'un tableau 1 (pas toutes les lignes justes celles qui m'intéressent) en suite les coller dans une feuille apparentant au même classeur sous forme d'un tableau 2.
      Le code que j'ai fait copie et colle sous format tableau mais à partir d'un certain nombre de copier-coller il cache toutes les lignes du tableau 1 et en plus il me colle tout le tableau sans faire de tri.
      Merci
      0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Vous avez sur le tableau 1 toutes les données et lorsqu'un enregistrement est clôturée vous voulez le supprimer du tableau 1 et le mettre dans l'archive [Tableau 2] ....est-ce bien cela que vous désirez ?

    0
    1. massimo888 Messages postés 209 Statut Membre
       
      Oui exactement
      0
    2. massimo888 Messages postés 209 Statut Membre
       
      J'ai fait ce code mais j'ai quelques erreurs.

      Sub Copier()

      Range("Tableau1").Select
      Selection.Copy
      Sheets("Feuil2").Select
      [A65536].End(xlUp).Select
      ' ActiveCell.Offset(-1, 0).Select
      Selection.EntireRow.Insert



      'boucle 1 supprimer lignes

      Dim i As Long
      For i = Range("B65536").End(xlUp).Row To 1 Step -1
      If Not UCase(Cells(i, 2).Value) Like UCase("*ordinateur*") Then Rows(i).Delete
      Next i


      'Boucle 2 supprimer doublons

      Range("Tableau2").Select
      ActiveSheet.Range("Tableau2").RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
      5), Header:=xlYes


      End Sub



      Pour la boucle 1, la macro se bloque une fois qu'elle n'a plus de lignes à supprimer.

      Merci pour votre aide
      0
  4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Merci pour l'information.
    Patience la réponse va suivre...!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Votre code ne fonctionne pas avec le fichier exemple mis à disposition qui à 8 colonnes et sur la feuille 2 il recopie sur 16384 colonnes ce qui est faux.
    Dans la boucle de suppression vous faite référence à : Like UCase("*ordinateur*") qui n'existe pas dans l'exemple.... !
    Je ne sais pas quoi faire !

    0
  7. massimo888 Messages postés 209 Statut Membre
     
    En fait j'ai changé le fichier. (j'ai fais trop de macros dessus)
    Je vous le transmet.

    http://cjoint.com/data/0GknQMDgn4E.htm
    0
  8. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Mais le nombre de macros n'a pas d'influence sur le fichier.... !
    Il suffit que ce soit le bon... !
    Dans votre code. La boucle pour supprimer les lignes vous ne devez pas supprimer la ligne des titres. Donc vos données commences en ligne 2 de ce fait remplacer le 1 par 2 dans [For,...] et profitiez de modifier votre code comme suit :

    For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1

    Note : [Cells(Rows.Count, 2).] tient compte automatiquement du nombre de ligne maximum de la feuille selon la version Excel utilisée.

    0
    1. massimo888 Messages postés 209 Statut Membre
       
      Tout d'abord merci pour la réactivité!!
      Je vais tester et je vous dis
      Merci
      0