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

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

Répondre au sujet
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 9 juil. 2008 à 17:10
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Molenn
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 9 juil. 2008 à 14:18
0
Utile
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
pyb54 33 Messages postés mercredi 2 juillet 2008Date d'inscription 15 février 2010 Dernière intervention - 9 juil. 2008 à 15:18
0
Utile
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
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 9 juil. 2008 à 15:48
0
Utile
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
pyb54 33 Messages postés mercredi 2 juillet 2008Date d'inscription 15 février 2010 Dernière intervention - 10 juil. 2008 à 08:20
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.