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 :

[VBA-E] - supprimer des colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut [VBA-E] - supprimer des colonnes
    Bonjour a tous,
    voila je doit parser un fichier Excel en Java. Ce fichier est un enorme calendrier avec des dates marquees en rouge. Moi je dois recuperer ces dates et les enregistrer dans ma base de donnée.
    Le probleme que j'ai c'est que je dois supprimer des lignes de mon fichier Excel afin de le convertir dans un format facilement parsable. Je dois juste recupere les dates et non pas les entete des colonnes.
    Mon probleme c'est que je ne connais pas du tout le VBA, et j'ai tellement a faire en JAVA que je n'ai pas le temps de m'y mettre. Je ne pense pas que c'est hyper compliquer a faire et ca serai vraiment cool si quelqu'un pouvait me donner un coup de pousse.
    Merci

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    il faudrait déjà savoir si tu veux supprimer des colonnes (titre du post) ou des lignes (texte du post) ???

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Salut,
    Si je comprend bien, tu veux le code qui te permet, en VBA, de supprimer la ligne 1 de l'onglet "MonOnglet", c'est-à-dire celle qui contient les entêtes des colonnes.
    Essaie comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub SupprLigne1()
       ActiveWorkbook.WorkSheets("MonOnglet").Rows(1).Delete Shift:=xlUp
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rows(NoLigne).delete
    Columns(NoCol).delete
    Avec ça tu peux tout effacer, ligne ou colonne... parce que, comme Thierrry, je n'ai pas compris...
    A+

  5. #5
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Merci bien les gars ca va vraiment vite, je suis impressionné

    Si je comprend bien, tu veux le code qui te permet, en VBA, de supprimer la ligne 1 de l'onglet "MonOnglet", c'est-à-dire celle qui contient les entêtes des colonnes.
    Ouai c'est exactement ca. En fait c'est les trois premieres lignes que je dois suprimmer. Je me suis mal exprime dans l'intituler de mon poste.
    Je vais essayer le code que tu m'as donné + ce que j'ai trouve sur le forum.
    Merci bcps
    romano

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Et pour faire ça, tu ne connais pas l'enregistreur de macro (Alt OME) ?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    T'as ? Alors mets Bouton en bas à gauche de la fenêtre

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Pour les 3 premières lignes:
    Et pour aller dans le sens de DarkVader, c'est vrai que tu serais allé ENCORE PLUS VITE en enregistrant une macro et en regardant le code.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Ok ca marche bien,
    maintenant il faudrait que ce qu'il y a dans mon fichier Excel apres ma proc EffacerLg() j'arrive a le placer dans un fichier .csv dans un autre repertoire, mais pour l'instant j'arrive pas a mettre mes infos a l'interieur

    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
     
     
    Sub EffacerLg()
    Dim l As Range
    Dim i As Integer
    Dim nFile As Integer
    For i = 1 To 5 Step 1
        'Efface la ligne voulue'
        ActiveWorkbook.Worksheets("Mindshare Plan Drop").Rows(i).Delete shift:=xlUp
     Next i
     
    nFile = FreeFile
    Open "C:\test.csv" For Output Shared As #nFile
    Print #nFile,
    Close #nFile
    End Sub

  10. #10
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    ALLO !!!!
    JE REPETE!!!!!
    ENREGISTREUR DE MACROS !!!!!!
    => "SaveAs"

    Merci.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu aurais sans doute trouvé ça dans la FAQ avec un peu d'effort mais puisque j'ai ça...

    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
    Sub SaveAsCSV(NomFichier) 'où nomFichier est le fichier créé
    Dim i, j, DernièreLigne, DernièreColonne, NomFichier
    '(nomFichier = "c:\FichierBricolé.csv")
        Application.ScreenUpdating = False  'masque les déplacements dans la feuille de calcul
        ActiveSheet.Range("A1").Select
        DernièreLigne = Selection.CurrentRegion.End(xlDown).Row
        DernièreColonne = Selection.CurrentRegion.End(xlToRight).Column
        Cells(1, 1).Select
        Open NomFichier For Output As #1
        For i = 1 To DernièreLigne  'les données sont lues ligne par ligne...
            For j = 1 To DernièreColonne - 1    '... colonne après colonne
                Print #1, Cells(i, j).Formula + ";"; 'SEPARATEUR ;
            Next j
            Print #1, Cells(i, j + 1).Formula   'crée un crlf en fin de ligne avant de passer à la suivante
        Next i
        Close #1
        Application.ScreenUpdating = True   'met à jour l'affichage
    End Sub
    Par macro, une sauvegarde en csv met une virgule comme séparateur. Le code ci-dessus te permet de mettre un ;

    A+

  12. #12
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Desole je comprend pas ce que tu me dis, je suis novice de chez novice en VBA c'est la premiere fois que j'y touche. Je sais ce qu'est une macro masi je vois pas l'interet de l'enregistrer en macro. Enfin si je vois mais je sais pas faire ???
    Merci

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    D'où l'intérêt certain de commencer par le commencement !

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je m'explique :
    Si tu enregistres manuellement un xls en csv, les séparateurs de données sont des points-virgules.
    Si tu l'enregistres par macro, les séparateurs sont des virgules. En anglais, le point-virgule n'existe pas même s'il est connu (semicolon)
    Donc, pour avoir un csv avec un point-virgule comme séparateur, on est contraint de passer par la création d'un fichier texte, avec csv comme extension à la place de txt.

    Voilà

    Tu dis

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Par défaut
    L'enregistreur de macro te permets de visualiser, le code VBA généré, pour les différentes actions que tu effectues.

    Exemple : tu actives l'enregistreur de macro sur Excel, puis la tu exécutes plusieurs actions (copier/coller, suppression de pages, ...).
    Ensuite tu coupes l'enregistreur de macros et tu visualises le code généré.

    Regardes dans la FAQ pour les détails !

    ++

  16. #16
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ok, alors j'explique:
    Il y a un moyen très simple de fabriquer automatiquement le code qui fait ce que tu veux faire. Dans Excel, dans le menu "Outils", "macro", tu choisis "Nouvelle macro". Là, il va te demander où tu veux mettre le code: accepte le choix par défaut. A partir de ce moment, (presque) tout ce que tu fais sur ton classeur est enregistré. Quand tu as fini, tu arrêtes l'enregistrement (en cliquant sur le petit carré).
    Et là, tu n'as plus qu'à aller dans l'éditeur de code: Alt + F11.
    Dans le menu de gauche, tu as une arborescence. Place toi dans ton classeur, et ouvre (double-click) le module (s'il y en a plusieurs, il faut fouiller...). Tu vas y trouver le code VBA qui fais ce que tu as fais toi-même juste avant.

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Il n'aura pas à fouiller tant que celà : le nom de la macro générée lui est indiqué au moment de la création...
    Une fois la macro enregistrée : outil ===>> macro ==>> s'affichent alors les macros présentes, parmi lesquelles la macro générée, avec le nom de baptème donné à sa création...

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    A propos de l'enregistreur de macro (bien pratique, en effet).
    Une restriction cependant.
    Quand tu effectues l'enregistrement d'un csv, si tu enregistres la macro, elle ne sera utilisable que pour un fichier ayant la même structure (même nombre de colonnes) sauf à modifier le code (lourd à modifier).
    Maintenant, si tu veux pouvoir généraliser l'utilisation d'une Sub générant du csv, l'enregistreur de macros ne te le permet pas.

    Juste une remarque en passant

    A+

Discussions similaires

  1. [C#] Supprimer des colonnes (Table avec 2 clés primaire)
    Par sara21 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/11/2006, 21h42
  2. [VBA-Excel]Supprimer une colonne entiere basee sur une cellule
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2006, 22h08
  3. Réponses: 7
    Dernier message: 11/08/2006, 14h26
  4. [VBA-E]supprimer des cellules vide
    Par garn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2006, 11h56
  5. [VBA][Excel]supprimer des lignes vierges
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/01/2006, 13h17

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