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 :

Insérer des colonnes à un emplacement différent à chaque execution de la macro selon un principe de récurrence


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Insérer des colonnes à un emplacement différent à chaque execution de la macro selon un principe de récurrence
    Bonjour,

    J'aimerais créer une macro qui insère une colonne à un emplacement différent à chaque lancement.

    Par exemple, lors de la première utilisation de la macro, je voudrais insérer une colonne en A C et E.

    J'obtiens celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Columns("G:G").Select
        Selection.Insert Shift:=xlToRight
        Columns("M:M").Select
        Selection.Insert Shift:=xlToRight
        Columns("S:S").Select
        Selection.Insert Shift:=xlToRight
    Lors de la deuxième utilisation, les emplacements devraient être G N et U puis G O W... (une structure G, M+1, S+2).

    Pourriez vous me donner une indication pour modifier le code.

    (Je suis désolé mais je débute, même un lien pouvant m'aiguille serait le bienvenu).

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    les colonnes peuvent aussi être déterminées par leur numéro, par exemple (et en évitant les sélections) ta ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns("G:G").Select
    Selection.Insert Shift:=xlToRight
    Peut s'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    columns(7).Insert Shift:=xlToRight
    J'ai pas bien saisi la logique par rapport aux colonnes, mais tu peux aussi déterminer quelle est la dernière colonne remplie sur base de la ligne 1 avec ce genre de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim NbCol as long
    NbCol = sheets("Tafeuil").cells(1,rows(1).cells.count).end(xltoleft).column
    Vois si le fait de trouver la dernière colonne remplie peut t'aider à monter l'algo qui permettra de définir où ajouter les colonne.

    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout à fait d'accord avec Fvandermeulen, c'est la question que j'allais vous poser : si on connaît la dernière colonne utilisée avant la première insertion et éventuellement la ligne obligatoirement renseignée dans les colonnes qui viendront s'ajouter, on pourra en déduire si vous en êtes au 1er, 2ème ou (n)ième traitement.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse

    En ce qui concernait les colonnes, ma logique était la suivante :

    Insérer une colonne à droite des colonnes x,y,z et t (1re exécution de la macro)
    Insérer une colonne à droite des colonnes x,y+1,z+2,t+3 (2ème exécution de la macro)
    Insérer une colonne à droite des colonnes x, y+1+1, z+2+2, t+3+3 (3ème éxecution de la macro)
    ...
    Insérer une colonne à droite des colonnes x, y+n-1, z+2n-2, t+3n-3 (nième éxecution)

    Désolé si je ne suis pas clair.

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour,
    une chose il ya plusieur bouton en bas d'une discution.
    Le bouton citer que tu utilise pour répondre permet de citer quelqu'un (c'est écrit dessus comme le port salut) si tu souhaite juste répondre ne l'utilise pas un tout petit peu plus bas a gauche il y a un bouton répondre

    Pour ta question
    il te suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim n as long
    n=
    Columns(7+n-1).Insert Shift:=xlToRight
    Columns(14+2n-2).Insert Shift:=xlToRight
    Columns(20+3n-3).Insert Shift:=xlToRight
    j'ai mis les valeur initiale au hazard.

    Le seul problème sera de connaitre n.
    Alors soit ut as un moyen de le connaitre en regardant la dernière colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n=(dernierecolonne-dernierecolonneInitiale)/3
    Soit a chaque ajout tu incrémente une cellule protégé de 1 mais a mon avis c'est une mauvaise idée

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci, c'est exactement ce que je recherchais.

    Un vrai alsacien, direct et efficace Je ne citerais plus inutilement.

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

Discussions similaires

  1. [XL-2003] Récupérer des informations sur des colonnes et lignes différentes
    Par filsdepub dans le forum Excel
    Réponses: 6
    Dernier message: 18/01/2012, 15h12
  2. Réponses: 4
    Dernier message: 23/02/2010, 17h33
  3. Réunir des colonnes de tables différentes dans une requête
    Par GCAccess dans le forum Modélisation
    Réponses: 3
    Dernier message: 14/03/2009, 00h59
  4. créer une table avec des colonnes de types différents
    Par d_hazem dans le forum Composants
    Réponses: 1
    Dernier message: 15/01/2009, 16h23
  5. [WD10-WD12] Insérer des colonnes dans une table
    Par Amanck dans le forum WinDev
    Réponses: 6
    Dernier message: 18/07/2008, 11h23

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