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 impossible en VBA [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut Insertion de colonne impossible en VBA
    Bonjour à tous,

    Voila, j'ai une feuille sous Excel contenant diverses informations.
    Dans ma macro VBA, je récupere l'en-tete de ma colonne (la valeur qui se trouve dans la premiere ligne) et j'insere une colonne

    Voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 To nbColonne
        entete = Cells(1, i).Value
        If (entete = "Ach") Then
         indexG = i
        End If
    Next i
    Cells(1, indexG).Select
    Selection.EntireColumn.Insert
    Cells(1, indexG) = "PP File"
    Cependant, j'ai aléatoirement un message d'erreur

    Erreur d'execution 1004
    Pour eviter la perte de données, Excel ne peut pas déplacer de cellules non vides en dehors de la feuille.
    Essayer de supprimer ou d'effacer les cellules situées à doite et sous vos données. Puis selectionner A1 et enregister votre classeur pour redefinir la derniere cellule utilisée

    Je ne vois pas d'où cela peux venir.

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Par défaut
    Bonjour Mathieu,

    Une petite idée a essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To nbColonne
        entete = Cells(1, i).Value
        If (entete = "Ach") Then
            Columns(i).Insert
            Cells(1, i) = "PP File"
        End If
    Next i
    EDIT: Ne pas oublier de sortir de la boucle si il n'y a pas plusieurs colonnes "Ach"

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Voila une proposition à laquelle je n'avais pas pensé !

    Je te tient au courant, je teste ton code dés que mon erreur revient ! (c a d d'ici peu de temps ^^)

    J'ai quand meme essayé de suite ton code dans une partie de ma macro comme je suis amené a inserer des colonnes à plusieurs endroits.
    J'ai juste modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 1 To nbColonne
        entete = Cells(1, i).Value
        If (entete = "Ach") Then
         Columns(i).Insert
         Cells(i, i) = "PP File"
         i = i + 1
        End If
    Next i
    car sinon il retrouve a chaque fois Ach dans l'en-tete et m'ajoute donc à l'infini une colonne avec "PP file"

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre méthode consiste à partir de la dernière colonne remplie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim c As Integer
     For c = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
      If Cells(1, c) = "Ach" Then
       Columns(c).Insert
       Cells(1, c) = "PP File"
      End If
     Next
    Commentaire : Si tu commence la boucle de la 1ère à la dernière colonne et que tu insères une colonne, la dernière colonne ne sera pas lue et ainsi de suite à chaque colonne insérée. C'est vrai pour les lignes également.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éprouvé Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Par défaut
    Vi exact vu qu'il décale la colonne vers la droite ^^ J'avais oublié ce détail

  6. #6
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Merci Phillipe de ta proposition.

    J'ai inserer ton code dans ma macro en adaptant le nom de l'en-tete recherché à mon cas.
    Ton code marche niquel et je n'ai pas eu besoin d'ajouter i = i + 1

    Je repost dés que j'ai un probleme pour voir si cela est dû à mon code, le tient ou celui de LouiMZ

    EDIT : Je mets le post en résolu, l'erreur est apparu sur le code que j'avais élaboré. Cela restera étrange.
    Merci à vous deux pour vos solutions !

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

Discussions similaires

  1. [AC-2003] Insertion impossible (en VBA)
    Par pickwick86 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/10/2009, 17h24
  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, 07h39
  3. insertion de colonne
    Par djam54 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/01/2006, 13h57
  4. Prb Insert avec Colonne NOT NULL
    Par Sunny dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/12/2005, 12h59
  5. Réponses: 1
    Dernier message: 30/11/2005, 13h44

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