[Catégorie modifiée VB6 --> VBA] Insertion de colonne une colonne sur deux

badege3378 Messages postés 2 Date d'inscription jeudi 19 août 2010 Statut Membre Dernière intervention 20 août 2010 - 20 août 2010 à 14:31
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 août 2010 à 17:16
Bonjour,

Je me suis lancée il y a quelques semaines sur vba mais je tatonne. Je n'arrive pas à trouver comment insérer des colonnes, une colonne sur deux sachant que mes colonnes A et B ne doivent pas bouger.
Est-ce que quelq'un peut m'aider ?
Merci par avance

Nadège

5 réponses

the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011
20 août 2010 à 14:50
et tu arretes l'insertion quand ??
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 15:02
Salut
Et quelle difficulté rencontres-tu ?
L'enregistreur de macro te fournira le code nécessaire à l'insertion d'une colonne.
Le reste, c'est une boucle entre la colonne de départ et celle de fin, en faisant bien attention de commencer par la fin afin de ne pas perturber le comptage.

Qu'as-tu écrit ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
badege3378 Messages postés 2 Date d'inscription jeudi 19 août 2010 Statut Membre Dernière intervention 20 août 2010
20 août 2010 à 15:23
Je viens d'écrire le code suivant et ça a l'air de fonctionner

'se positionner en D3
Range("d3").Select

'pour les colonnes 3 à 35
For i = 1 To 45

'insérer deux colonnes
Selection.EntireColumn.Insert
Selection.EntireColumn.Insert

'se décaler de 3 colonnes
ActiveCell.Offset(0, 3).Select

Next i

tu veux dire quoi par "commencer par la fin" ?
Merci par avance
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 17:15
Ce que je veux dire, c'est que, si tu as des données dans tes colonnes (exemple en colonne C) et que tu insères une colonne devant C, l'ancienne colonne C se retrouvera en D.
Si tu fais une boucle normale, la colonne suivante sera D : Or, D est l'ancienne colonne C = pas bon.
Alors que si tu commences de 45 vers 1, ce décalage n'aura pas d'incidence.
Exemple :
    For r = 45 To 3 Step (-1)

Mais dans ton cas, cela a peu d'importance puisque la variable de ta boucle, r, ne désigne pas la colonne mais te sert juste de compteur.

Exemple illustrant mon propos :
    For r = 45 To 3 Step (-1)
        ActiveSheet.Columns(r).Insert Shift:=xlToRight
    Next r
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 août 2010 à 17:16
PS : dans mon exemple, r représente directement le n° de la colonne
0
Rejoignez-nous