IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sélection et suppression d'un fichier à l'autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Par défaut Sélection et suppression d'un fichier à l'autre
    Bonjour,

    Voilà je me tourne vers vous car nous avons une problématique et nos connaissance en VBA sont médiocres.

    Aujourd'hui nous avons deux fichiers excel. Le premier est un tableau de 3 colonnes sur 90k lignes et le second répertorie dans un tableau les lignes du premier tableau qui sont en erreur.

    Notre pb est que j'ai le numéro des lignes en erreur mais j'en ai plus de 400 ! autant dire interminable de sélectionner cela à la main. Mon petit projet est donc de créer un macro.

    La colonne E du fichier 2 indique le numéro des lignes incriminées dans le fichier 1. Je veux donc faire une sélection simple dans le fichier 1 d'après les numéro de ligne indiqué dans le fichier 2. Ensuite la macro supprime les lignes sélectionnées et "rétracte" le tableau pour ne pas laisser de blanc.

    Exemple: dans le fichier 2 la ligne 2 indique que la ligne 800 du fichier 1 est en erreur. Je veux donc sélectionner cette ligne dans le fichier. Puis la ligne 3 indique la ligne 2400 du fichier 1. Je veux donc la sélectionner aussi ainsi de suite. Une fois fait il serrait formidable qu'un message demande si on veut vraiment supprimer les lignes dans le fichier 1 et quand on fait ok ca supprime et ca rétracte pour ne pas laisser de blanc. Mais bon c'est pas obliger non plus vu que j'ai besoin d'une réponse assez rapide ^^

    La compatible peut elle être compatible avec toutes les version excel?

    Merci à tous

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    Oui c'est pas hyper compliqué, tu met ça dans le fichier 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    sub selectionsuppr()
     
    dim i as integer
    dim numligne as collection
     
    Workbooks.Open fileName:=chemindufichier2 'remplace chemindufichier2 par le chemin du fichier 2
    i=1 'Ou i=2 si la colonne E contient une entête
     
    set numligne=new collection
     
    while cells(i,5)<>
       numligne.add cells(i,5), cells(i,5)
    wend
     
    activeworkbook.close
     
    for i=numligne.count to 1 step-1
       rows(numligne(i)).delete
    next i
     
    end sub
    Ca marche si dans ta colonne E les numéros de ligne sont dans l'ordre croissant, s'ils sont pas triés il faut une petite étape en plus permettant de trier les élements de la collection dans l'ordre croissant.

  3. #3
    Nouveau membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2013
    Messages : 6
    Par défaut
    Merci c'est très aimable de votre part une réponse si rapide mais lorsque j'adapte le code à mon cas d'utilisation a quel moment je déclare que je veut utiliser la colonne E?

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    C'est a ça que correspond le 5 dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while cells(i,5)<>""
       numligne.add cells(i,5), cells(i,5)
    wend

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut selection et suppression d'un fichier à l'autre
    Bonjour Fred.dz,

    Peux-tu m'expliquer ce que fait exactement la boucle.

    Je soupçonne qu'elle ajoute des éléments à la collection mais le problème est que mon essai bloque sur cette ligne (erreur d’exécution 13 - incompatibilité de type).

    Je ne sais le motif de cette erreur et ne peut donc rien conclure de mon essai.

    Merci.

    cordialement.

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    Oui c'est ça. Dans le premier post j'ai oublié de mettre les guillements dans

    A part ça normalement ça marche. Si tu as plusieurs cellules qui ont la même valeur ça plante (car une collection ne peut pas avoir 2 éléments avec la même clé). Pour rémédier à ça tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while cells(i,5)<>""
       on error resume next
       numligne.add cells(i,5), cells(i,5)
       on error goto 0
    wend
    Qui permet en gros d'ignorer les erreurs et de continuer l'execution comme si de rien n'était .

Discussions similaires

  1. [WD-2003] Copie d'une sélection d'un fichier à un autre
    Par naunau31 dans le forum VBA Word
    Réponses: 1
    Dernier message: 22/04/2012, 18h19
  2. Réponses: 4
    Dernier message: 22/12/2003, 11h12
  3. Réponses: 8
    Dernier message: 14/11/2003, 22h51
  4. Réponses: 2
    Dernier message: 11/08/2003, 13h43
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo