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 une nouvelle colonne tous les trois colonnes [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 108
    Par défaut insérer une nouvelle colonne tous les trois colonnes
    Bonjour à tous,

    Je souhaiterai savoir s'il y a une possibilité en VBA d'insérer une nouvelle colonne tous les trois colonnes.
    Je m'explique:
    A partir de la colonne I je souhaite créer une colonne dont le libellé sera "Mois" en K donc la troisième colonne après I et que cela se fasse aussi bien sur N avec le même libellé que sur Q et cela jusqu'à la dernière colonne remplie de ma feuille.
    Après la dernière colonne remplie je souhaite une dernière fois qu'une colonne se créer et que son libellé soit "Mois".
    Jusqu'à aujourd'hui je n'ai rien trouvé.
    Dur dur la semaine alors si vous pouvez m'aider... Ce ne sera pas de refus.
    Merci à tous.
    Et bonne fin de journée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 121
    Par défaut
    Citation Envoyé par franckimmo Voir le message
    Bonjour à tous,

    Je souhaiterai savoir s'il y a une possibilité en VBA d'insérer une nouvelle colonne tous les trois colonnes.
    Je m'explique:
    A partir de la colonne I je souhaite créer une colonne dont le libellé sera "Mois" en K donc la troisième colonne après I et que cela se fasse aussi bien sur N avec le même libellé que sur Q et cela jusqu'à la dernière colonne remplie de ma feuille.
    Après la dernière colonne remplie je souhaite une dernière fois qu'une colonne se créer et que son libellé soit "Mois".
    Jusqu'à aujourd'hui je n'ai rien trouvé.
    Dur dur la semaine alors si vous pouvez m'aider... Ce ne sera pas de refus.
    Merci à tous.
    Et bonne fin de journée
    Es-tu sûr de vouloir créer 1 colonne toutes les 3 colonnes?
    I = 1 mais N = 1
    J = 2 O = 2
    K = 3 P = 3
    Q = 4

  3. #3
    Membre Expert 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
    Par défaut
    Salut,
    Une bonne vielle boucle avec un Step à +3 et le tour est joué...

    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 InsertCol()
     
    Dim NbCol As Long, i As Long
     
    'On récupère le numéro de la dernière colonne remplie et on l'affecte à la variable NbCol
    NbCol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column
     
    'Boucle de la colonne 11 (K) pour le premier insert jusque la dernière colonne remplie + 3 (pour avoir le dernier titre)
    'Le Step 3 fait le saut souhaité, donc de 11 on passe à 14 (colonne N) pour l'insert suivant
    For i = 11 To NbCol + 3 Step 3
     
        Columns(i).Insert 'Fait l'insert pour la colonne concernée
        Cells(1, i) = "Mois" 'Ajoute le mot mois dans la ligne 1 de la colonne concernée
    Next i
     
    End Sub
    En espérant avoir été clair dans les explications

    A+

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par Fvandermeulen Voir le message
    Salut,
    Une bonne vielle boucle avec un Step à +3 et le tour est joué...

    En espérant avoir été clair dans les explications

    A+
    Bonjour tous,
    L'tdée est bonne mais je pense qu'il faut une boucle inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = NbCol + 3  to 11  Step -3
    A+

  5. #5
    Membre Expert 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
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour tous,
    L'tdée est bonne mais je pense qu'il faut une boucle inverse
    A+
    Re,
    Sauf erreur dans le cas d'un insertion c'est vert chou et chou vert contrairement à une suppression où la step négatif est nécessaire.
    Mais comme vous m'avez mis le doute j'ai testé et il me semble que pour autant qu'il y ait toujours 2 colonnes à sommer mon code donne le résultat attendu.
    A+

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    alors je dirais au temps pour moi je n'avais pas vu que le nombre de colonne été fixe (en plus j'avais compté 3 colonne entre deux mois).
    En fait ca passe bien du coup

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    ou encore, tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    premiere = 11
    derniere = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column
    pas = 3
    For i = premiere + pas + 1 To ederniere Step pas + 1
      Columns(i).Insert
    Next

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour une remarque

    j'ai les colonne suivante (je compte a partir de 1 pour simplifier)
    C C C C C C C C C C C C
    NbCol =12
    i=3 jinsert après la 3ème
    C C C I C C C C C C C C C
    i=3+3 j'insert après la 6ème
    C C C I C C I C C C C C C C
    i=6+9 après la 9ème
    C C C I C C I C C I C C C C C
    i=12
    C C C I C C I C C I C C I C C C

    Avoue que ce n'est pas top

    Dans c'est cas la c'est comme pour les ligne il faut commencer par la fin


    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 InsertCol()
     
    Dim NbCol As Integer, i As Integer
     
    'On récupère le numéro de la dernière colonne remplie et on l'affecte à la variable NbCol
    NbCol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column
     
    'Boucle de la colonne 11 (K) pour le premier insert jusque la dernière colonne remplie + 3 (pour avoir le dernier titre)
    'Le Step 3 fait le saut souhaité, donc de 11 on passe à 14 (colonne N) pour l'insert suivant
    For i = (NbCol \ 3) * 3 To 11 Step -3
     
        Columns(i + 1).Insert 'Fait l'insert pour la colonne concernée
        Cells(1, i + 1) = "Mois" 'Ajoute le mot mois dans la ligne 1 de la colonne concernée
    Next i
     
    End Sub
    Edit bonjour le forestier j'ai mis un peu de temps a tester pour régler le problème des nombre de colonne qui ne sont pas un multiple de 3 ca et d'autre chose mais c'est parceque je suis mauvais que j'ai eu du mal sur d'autre chose

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 108
    Par défaut
    Salut,
    Je pense que le mieux c'est d'avoir un projet visuel, c'est pour cela que je t'envoie par zip le fichier en 97_2003, car je ne sais pas si tu as Exell 2007.
    Il y a un onglet Feuil2, qui représente le résultat voulu, mais bien sûr à petite echelle car mon but c'est de trouver une solution automatisée.
    Dans l'onglet Exemple tu verras qu'il manque les colonnes MOIS, qu'il y a dans l'onglet Feuil2. C'est ces colonnes que je souhaite créér par un code.
    Je pense qu'il faut définir la dernière colonne remplie à droite, de là, créer une colonne et l'appeler Mois, puis indiquer qu'à partir de cette colonne nouvelle, se déplacer vers la gauche et sélectionner la deuxième colonne et insérer une colonne et l'appeler Mois puis faire de même jusqu'à arriver à la dixième colonne en partant de la gauche qui devra être la colonne J normalement si je ne me trompe pas.
    Tu pourras voir que j'ai concocté un code qui quand tu est dans la feuil2 et tu tape ctrl+a va transférer toutes les colonnes et en fera des lignes dans l'onglet Cible. Si cela peut intéresser certaines personnes .....

    Merci et bonne journée
    franck

  10. #10
    Membre Expert 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
    Par défaut
    Re à tous,
    OK, ça y est j'ai percuté, Faut pas m'en vouloir c'est vendredi
    C'est vrai que je m'étais limité au premier exemple, si le nombre de colonne est variable (ce qui était sous entendu dans la question initiale ) vous avez raison, il faut passer par un step -1
    Donc sur base de mon premier code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub InsertCol()
     
    Dim NbCol As Long, i As Long
     
    'On récupère le numéro de la dernière colonne remplie et on l'affecte à la variable NbCol
    NbCol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column
     
    For i = NbCol + 1 To 11 Step -2
     
        Columns(i).Insert 'Fait l'insert pour la colonne concernée
        Cells(1, i) = "Mois" 'Ajoute le mot mois dans la ligne 1 de la colonne concernée
    Next i
     
    End Sub
    Faut pas m'en vouloir c'est vendredi

    A+

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 108
    Par défaut
    Bonjour à tous,
    Super merci cela fonctionne parfaitement. Et maintenant une chose très difficile à faire et je pense impossible mais j'essaye:
    Supposons que la colonne K ait déjà un Mois ex: (Janv-09), pouvons nous après avoir insérer les colonnes Mois écrire un code qui pourrait prendre la référence de la colonne K et d'indiquer par automation que les colonnes Mois créées prennent la valeur Fev-09, Mars-09 etc... Bien sûr il faudrait certainement indiquer que toutes les nouvelles colonnes Mois soit du type Date.
    Du moment que la colonne K est renseignée, aussi bien pour l'année 2007 ou autre ex: Janv-07 ou Janv-08 il faudrait que les autres nouvelles colonnes soient renseigner ex Fév-07...ou Fév08

    Je pense que c'est hard, mais on sait jamais si vous avez des idées, n'hésitez pas.
    Bonne après midi à tous
    Franck

  12. #12
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    une boucle qui donnerait les valeurs 01-08 jusqu'à 12-08
    et tu joues avec le format de ta cellule en mettant un format particulier
    (format personnalisé mmmm-aa) et comme ca excel reconnaitras ton format

    Plus qu'a faire ta boucle

  13. #13
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Au lieu de mets mais dans une autre boucle à partir de la colonne K
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, j) = Format(DateAdd("m",1, cells(1,j-1)),"mmm yy")
    Bien sûr les cellules cells(1,j) doivent de type date (tu peu leur donner le Format "mmm yy" pour qu'ils apparaissent sous forme "Jan 07"
    Si j'ai bien compris ton message

    Edit: je n'avais pas vu que le code partait de la fin Step-1 pour l'insertion des colonnes. d'où ma modification sur une autre boucle

  14. #14
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Un truc comme ç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
    19
    20
    21
    22
    23
    24
    25
    26
    Sub InsertCol()
     
    Dim NbCol As Long, i As Long
     
    'On récupère le numéro de la dernière colonne remplie et on l'affecte à la variable NbCol
    NbCol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column
    If IsDate(Cells(1, 11).Value) Then
    j = (NbCol - 10) / 2
    For i = NbCol + 1 To 13 Step -2
     
        Columns(i).Insert 'Fait l'insert pour la colonne concernée
        Cells(1, i) = DateAdd("m", j, Cells(1, 11).Value) 'Ajoute le mot mois dans la ligne 1 de la colonne concernée
        j = j - 1
    Next i
     
    Else
     
    For i = NbCol + 1 To 11 Step -2
     
        Columns(i).Insert 'Fait l'insert pour la colonne concernée
        Cells(1, i) = "Mois" 'Ajoute le mot mois dans la ligne 1 de la colonne concernée
    Next i
     
    End If
     
    End Sub

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par franckimmo Voir le message
    Bonjour à tous,

    Je souhaiterai savoir s'il y a une possibilité en VBA d'insérer une nouvelle colonne tous les trois colonnes.
    Je m'explique:
    A partir de la colonne I je souhaite créer une colonne dont le libellé sera "Mois" en K donc la troisième colonne après I et que cela se fasse aussi bien sur N avec le même libellé que sur Q et cela jusqu'à la dernière colonne remplie de ma feuille.
    Après la dernière colonne remplie je souhaite une dernière fois qu'une colonne se créer et que son libellé soit "Mois".
    Jusqu'à aujourd'hui je n'ai rien trouvé.
    L'explication n'est pas clair, si à partir de la colonne I tu veux insérer en K cela ne fait que 2 colonne plus loin, faudrait donc faire un pas de deux et non un pas de trois.
    A+

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

Discussions similaires

  1. [XL-2010] Tirer une formule qui porte que toutes les trois colonnes
    Par opl2014 dans le forum Excel
    Réponses: 6
    Dernier message: 05/05/2014, 10h36
  2. [Toutes versions] somme sur une colonne tous les 17 cellules
    Par jolemoine dans le forum Excel
    Réponses: 6
    Dernier message: 07/05/2012, 15h30
  3. Insérer une nouvelle colonne dans un fichier Excel
    Par TopCao dans le forum MATLAB
    Réponses: 8
    Dernier message: 11/10/2011, 09h29
  4. Réponses: 2
    Dernier message: 16/04/2010, 12h04
  5. Réponses: 5
    Dernier message: 19/10/2009, 10h41

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