Déplacer des colonnes d'un classeur Excel avec vba [Résolu]

Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
- - Dernière réponse : pyb54
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
- 10 juil. 2008 à 08:20
Bonjour je travaille actuellement sur une application afin d'importer des feuilles excel dans une base de données, jusque la pas de problèmes, seulement les feuilles excel ( des factures pour être précis ) possède parfois des colonnes vides et le cas échéant ma commande TransferSpreadsheet me renvoie une erreur du style le champ f5 n'existe pas.

J'ai tenté de procéder à un "masquage" en masse des colonnes vides mais ensuite la feuille ne comportant plus un nombre valide de colonnes, l'importation est aussi impossible.

Je cherche donc à décaler mes colonnes, avec un code qui repère quand une colonne est non vide et que celle à gauche l'est.

Quelqu'un saurait me faire partager ses lumières ?

J'ai écris un bout de code qui pour le moment renvoit un "overflow" en erreur ( boucle infini ? ) bref je bloque cette fois

le code en question :

For i = 0 To Columns.Count - 1
nbColumn = Columns
    If nbColumn(i).Value <> "" And nbColumn(i - 1).Value = "" Then
        nbColumn(i).Select
        Selection.Cut
        nbColumn(i - 1).Select
        ActiveSheet.Paste
    End If
Next i
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
4
3
Merci
Quand je parle de feuille tampon (je suis écoeuré, bigfish_le vrai, tu m'enlèves une jolie réplique ^^), je parle d'une feuille temporaire, d'une feuille Excel toute bête en fait ... une feuille blanche :)


Et pour copier, tu peux utiliser l'enregistreur de macro pour avoir la syntaxe exacte, mais ça donnerait un truc du genre :
Copie de la feuille "TaFeuille" sur la feuille "Tampon" :

Worksheets("TaFeuille").Columns("A:A").Copy
ActiveSheet.Paste Destination:=Worksheets("Tampon").columns("B:B")

Molenn

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
4
0
Merci
Plutôt que de masquer des colonnes, j'utiliserai une feuille tampon personnellement :

Avec ton code, tu vas d'abord vérifier toutes tes colonnes une par une, et si elles ne sont pas vides, tu copies la colonne dans ta feuille tampon. En faisant ça dans l'ordre des colonnes et en copiant une par une, sur ta feuille tampon, tu auras une feuille contenant toutes tes données avec seulement des colonnes non vides.
'te reste plus qu'à faire ton transfertSpreadSheet, systématiquement sur la feuille tampon.

Molenn
Commenter la réponse de Molenn
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
0
Merci
Bonjour Molenn

tout d'abord merci pour ton intervention rapide


Je n'ai jamais utilisé de tampon encore tu aurais une syntaxe à me proposer ou un lien détaillant son utilisation à me proposer ?
Commenter la réponse de pyb54
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Salut,

"Je n'ai jamais utilisé de tampon"... C'est normale pour un garçon... non ?...... desolé je ne pouvai pas la manquer celle-la ... lol !

Plus serieusement tu n'es pas dans le bon theme. Pour excel et le VBA c'est ici :

[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]

Une  feuille excel contient toujours 256 colonnes. Que tu ajoutes une colonne ou que tu supprimes une colonne elle en contient toujours 256.
Donc je ne vois pas quel pourrait etre le probleme si tu supprimes les colonnes vides plutot que de les masquer.

J'ai une question avant d'aller plus loin est-ce que l'on pourrait ce referer a une seule ligne pour determiner qu'une colonne est vide ou non ? Autrement dit, est-ce que si l'on regarde le contenu de la ligne 1(par exemple), les cellules de cette ligne qui croisent les colonnes dite non vide sont elles aussi toujours non vide a coup sur ?

A+
Commenter la réponse de bigfish_le vrai
Messages postés
33
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
15 février 2010
0
Merci
Lol le tampon, ok ok je l'ai cherché :D

En tout cas merci pour m'avoir éclairé sur le sujet, bonne journée à vous
Commenter la réponse de pyb54