Déplacer des colonnes d'un classeur Excel avec vba

Résolu
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010 - 9 juil. 2008 à 12:19
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

5 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
9 juil. 2008 à 17:10
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
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
9 juil. 2008 à 14:18
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
0
pyb54 Messages postés 33 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 15 février 2010
9 juil. 2008 à 15:18
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 ?
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
9 juil. 2008 à 15:48
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+
0

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

Posez votre question
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
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
0
Rejoignez-nous