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 :

Insertion de colonne et de valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 29
    Points : 10
    Points
    10
    Par défaut Insertion de colonne et de valeurs
    Bonjour !

    Voici mon problème :

    J'ai un dossier contenant plein de fichiers Excel qui contiennent tous plusieurs feuilles.

    Il faut que je rajoute une colonne dans chacune des feuilles des fichiers (la colonne A). Puis que dans cette colonne, je rajoute sur chaque ligne le titre du fichier.

    Voila ce que j'ai commencé à faire :

    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 rajouter_colonne()
     
    Dim num_opti As Variant
    Dim sh As Variant
     
    num_opti = Dir("C:\Users\cboureau\Desktop\Test\" & "*.xlsx")
     
    Do While Len(num_opti) > 0
     
        For Each sh In num_opti
     
            Do Until Cells(i + 1, 2).Value = ""
                     Cells(i + 1, 1).Value = num_opti
            Loop
     
        Next sh
     
    num_opti = Dir
    Loop
     
    End Sub
    Il me manque juste l'insertion de la colonne et je ne suis absolument pas sur pour le For Each...

    Je vous remercie.

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Quand tu dis sur chaque ligne, tu veux peut-être t'arrêter à une zone où il y aurait des données non ?
    (Et ton code ne fait pas du tout ce que tu veux, en plus du fait que tu mélanges un peu For Each... et For i = 1 To...)
    Et n'oublie pas d'utiliser la balise # pour que l'on identifie ton code comme tel dans ton message.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Quand je dis sur chaque lignes c'est qu'il faut que ça s'arrete lorsque les cases sont vides dans la feuille. C'est pour ça que j'ai fait le # Do Until....#

    Mais je sais, j'ai un peu de mal avec les For Each...

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Essaie de comprendre ce code et adapte le :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Option Explicit
     
    Public Sub RajouterColonne()
     
        Dim nomFichier As String
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim i As Integer
     
        'On recherche le premier fichier xlsx
        nomFichier = Dir("C:\Users\cboureau\Desktop\Test\*.xlsx")
     
        Do While nomFichier <> "" 'Pour tous les fichiers
     
            Set wb = Workbooks.Open(nomFichier) 'On ouvre le classeur
     
            For Each ws In wb.Worksheets 'Pour chacune des feuilles
     
                ws.Columns("A:A").Insert Shift:=xlToRight
     
                i = 1
                Do While ws.Cells(i, "B").Value <> "" 'Tant que la colonne B n'est pas vide
                    ws.Cells(i, "A").Value = wb.Name 'Ou nomFichier si tu veux le chemin complet
                    i = i + 1 'Ligne suivante
                Loop
     
            Next ws
     
            wb.Save 'On sauve le classeur
            wb.Close 'On le ferme
     
            nomFichier = Dir 'Fichier xlsx suivant
     
        Loop
     
    End Sub

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    J'ai un problème sur le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wb =  workbooks.open(nomFichier)
    J'ai rajouté un Application. mais ça ne fonctionne pas quand même, j'ai une erreur 1004. Tu penses savoir d'où ça vient ?

    [Edit]
    C'est bon, il faut concatener nomFichier avec le chemin du fichier

  6. #6
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Oui, pardon, j'étais parti du principe qu'il te donnait le chemin complet, erreur de ma part. J'utilise rarement DIR, d'habitude je travaille plutôt avec les fonctions du FileSystemObject.
    Du coup utilise nomFichier plutôt que wb.Name

  7. #7
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Salut,

    juste pour info, soit tu mets les balises [CODE] et [./CODE] (sans le point) autour de ton code, soit tu clique sur #, un bouton pour mettre automatiquement les balises

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [mysql 5.0] insert en fonction de la valeur d une colonne
    Par jota5450 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/08/2007, 11h15
  2. Insertion (nouvelle) colonne entre deux existantes sql-2000
    Par icebe dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/01/2006, 08h39
  3. insertion nouvelle colonne
    Par fxp17 dans le forum Oracle
    Réponses: 7
    Dernier message: 18/01/2006, 12h53
  4. insertion de colonne
    Par djam54 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/01/2006, 14h57
  5. Prb Insert avec Colonne NOT NULL
    Par Sunny dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/12/2005, 13h59

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