Insérer une colonne avec VBA

Bonjour,

je veux insere un colonne avec VBA sans écraser l'ancienne colonne. j'ai réalisé ce petit code qui permet d'importer un fichier csv et inserer une colonne au début de fichier mais il supprime la première colonne. Merci

Sub ImportCSV()

F1.Select

Range("A1").Select

Selection.EntireColumn.Insert

For p = 1 To 1467

Cells(p, 2) = "Mai"

Next p

end sub

Bonjour!

C'est normal, la fonction Insert est incomplète,

Selection.EntireColumn.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Essaye avec ça

Merci ça fonctionne très bien.

Bonjour,

juste une petite optimisation du code VBA :

Sub ImportCSV()
  Application.ScreenUpdating = False
  ..........
  F1.Select
  [A1].EntireColumn.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
  [B1].Resize(1467).Value = "Mai"
End Sub

(y'a plus d'sélection d'la cellule A1 ; et y'a plus d'boucle For p .. Next p)


si tout est ok :

dhany

Personnellement le

Range("A1").Select
Selection.EntireColumn.Insert
For p = 1 To 1467
Cells(p, 2) = "Mai"

Next p

fonctionne très bien, cela ajoute une colonne en premier directement. Par contre la boucle For étant sur la cells(p,2), cela écrase bien la deuxième colonne soit en effet la première colonne de ton ancien tableau

ECG

oui merci ça marche très bien.

Bonjour kwala,

as-tu essayé le code VBA que je t'ai proposé dans ce post : https://forum.excel-pratique.com/viewtopic.php?p=665744#p665744 ?

note bien que c'est le .Resize(1467) qui permet d'éviter une boucle de 1467 itérations ➯ code VBA plus rapide !

peux-tu me dire si ça a marché comme tu l'espérais ?

dhany

le code ça marche bien mais il écrase la première colonne.

ah bon ? j'pensais que non, avec : Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

dommage ! mais sans fichier pour tester... !

dhany

sans fichier dur de voir ce qui merdouille en effet mais comme je disais si tu utilises ton code

For p = 1 To 1467
Cells(p, 2) = "Mai"

Next p

après le code de Dhany pour ajouter ta colonne, normal de perdre des informations

ECG

Bonjour ECG,

pour moi, [B1].Resize(1467).Value = "Mai" fait la même chose que ta boucle For !

car pour ton code VBA : ça va de 1 à 1467, et colonne 2 = colonne B

donc dans les 2 cas, ça écrit "Mai" sur toute la plage B1:B1467

dhany

le problème est surtout s'il fait un mixte des deux plutôt que d'utiliser que ta solution qui fait tout d'un coup

Car sa première boucle For ne fait pas du tout la même chose, c'est sur la colonne 2 que cela inscrit "mai" et pas la 1! avec son fichier on aurait plus de visibilité surtout qu'il répond

oui merci ça marche très bien.

des fois

ECG

Salut

c'est un fichier CSV qui je vais importer avec Excel (un code vba ) et en même temps je veux insérer des colonnes sans écraser les données.

ci-joint fichier .CSV.

Rechercher des sujets similaires à "inserer colonne vba"