Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2020 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [excel] copie et insertion de colonnes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[excel] copie et insertion de colonnes

n°766165
Myway
Posté le 16-06-2004 à 17:08:22  profilanswer
 

Bonjour,
 
Dans ma base de données, j'ai un certain nombre d'applications (minimum 1)
J'ai un fichier excel, avec un tableau qui au départ contient 2 colonnes: une colonne (disons D) pour la 1ère appli ( on est sûr qu'il y en a une) et une colonne "total" qui doit être la dernière colonne du tableau.
 
Dans un script VB, je parcours ma BD, pour la 1ère appli trouvée, je remplis la colonne D. Pour chacune des autres appli trouvées, il me faut copier la colonne D (pour garder la mise en forme + formules) et l'insérer entre D et la colonne  "Total".  
 
Je n'arrive pas à faire cela  :(  
 
J'ai comme piste:  
feuille_excel.Columns("D:D" ).Select.copy pour sélectionner la colonne et la copier
 
Mais pour l'insertion, je n'arrive pas à trouver comment faire?  
 
Merci de votre aide!  :hello:  

mood
Publicité
Posté le 16-06-2004 à 17:08:22  profilanswer
 

n°766261
Myway
Posté le 16-06-2004 à 17:46:05  profilanswer
 

myway a écrit :

Bonjour,
 
Dans ma base de données, j'ai un certain nombre d'applications (minimum 1)
J'ai un fichier excel, avec un tableau qui au départ contient 2 colonnes: une colonne (disons D) pour la 1ère appli ( on est sûr qu'il y en a une) et une colonne "total" qui doit être la dernière colonne du tableau.
 
Dans un script VB, je parcours ma BD, pour la 1ère appli trouvée, je remplis la colonne D. Pour chacune des autres appli trouvées, il me faut copier la colonne D (pour garder la mise en forme + formules) et l'insérer entre D et la colonne  "Total".  
 
Je n'arrive pas à faire cela  :(  
 
J'ai comme piste:  
feuille_excel.Columns("D:D" ).Select.copy pour sélectionner la colonne et la copier
 
Mais pour l'insertion, je n'arrive pas à trouver comment faire?  
 
Merci de votre aide!  :hello:


Bon, j'ai trouvé en faisant une macro excel et en regardant le code généré (j'y avais pas pensé :ange: )
voici le code (si jamais ça peut aider qqn par la suite)

Code :
  1. feuille_excel.Columns("D:D" ).Select
  2.     Selection.Copy
  3.     feuille_excel.Columns(colonne_ou_copier & ":" & colonne_ou_copier).Select
  4.     Selection.Insert Shift:=xlToRight


colonne_ou_copier est calculé suivant le numéro de l'application à insérer (colonne_départ (=D) + n°_appli)
 
Désolée du dérangement!  :hello:

n°766352
Myway
Posté le 16-06-2004 à 19:18:28  profilanswer
 

myway a écrit :


Code :
  1. feuille_excel.Columns("D:D" ).Select
  2.     Selection.Copy
  3.     feuille_excel.Columns(colonne_ou_copier & ":" & colonne_ou_copier).Select
  4.     Selection.Insert Shift:=xlToRight


colonne_ou_copier est calculé suivant le numéro de l'application à insérer (colonne_départ (=D) + n°_appli)
 
Désolée du dérangement!  :hello:


Finalement je n'ai pas totalement résolu mon pb, car je voudrais ne pas copier les valeurs qui sont dans la colonne copiée.Par contre, je voudrais conserver les formules... C'est possible ça?  :??:  
 
 :hello:

n°766691
JihemAir
Je sais pas
Posté le 17-06-2004 à 08:11:10  profilanswer
 

Pourquoi tu ne reprogrammes pas ta colonne "Total" à chaque fois ? Je suppose que chaque cellule de cette colonne est une somme, facile à programmer. Ca t'eviterait toute cette gymnastique d'insertion....


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°767080
pumpkin031​2
Posté le 17-06-2004 à 12:13:13  profilanswer
 

Code :
  1. Columns("ref Colonne ou inserer" ).Select
  2.     Selection.Insert Shift:=xlToRight
  3.     Columns("ref Colonne modèle" ).Select
  4.     Selection.Copy
  5.     Columns(colonne_ou_copier & ":" & colonne_ou_copier).Select
  6.     Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
  7.         False, Transpose:=False
  8.     Application.CutCopyMode = False

n°767439
Myway
Posté le 17-06-2004 à 15:00:34  profilanswer
 

Merci pour l'aide de vous tous, ça marche très bien  :love:  
 
Je rencontre un autre pb  :(  
J'ai créé et ouvert une feuille excel avec 2 onglets.Je m'intéresse pour commencer au 1er onglet "correction". Voilà la code.

Code :
  1. 'Déclaration des variables
  2.     Dim appExcel As Excel.Application 'Application Excel
  3.     Dim wbExcel As Excel.Workbook 'Classeur Excel
  4.     Dim wsExcel As Excel.Worksheet 'Feuille Excel
  5.     'Ouverture de l'application
  6.     Set appExcel = CreateObject("Excel.Application" )
  7.     'Ouverture d'un fichier Excel
  8.     Set wbExcel = appExcel.Workbooks.Open(chemin_report & annee_courant & mois_entier & jour_entier & heure_entiere & minute_entiere & seconde_entiere & nom_report & nom_cluster & "_from_" & li_annee_analyse & li_mois_analyse_entier & ".xls" )
  9.     'wsExcel correspond à la feuille correction
  10.     Set wsExcel = wbExcel.Worksheets("correction" )


J'appelle ensuite une fonction pour copier la colonne et l'insérer là où je veux:

Code :
  1. Call NouvelleColonne((premiere_ligne - 1), "D", col_ou_copier, wsExcel)
  2. Sub NouvelleColonne(ligne_debut As Integer, colonne_a_copier As String, colonne_ou_copier As String, feuille_excel As Excel.Worksheet)
  3.     feuille_excel.Columns(colonne_a_copier & ":" & colonne_a_copier).Select
  4.     Selection.Copy
  5.     feuille_excel.Columns(colonne_ou_copier & ":" & colonne_ou_copier).Select
  6.     Selection.Insert Shift:=xlToRight
  7.     ' effacement des valeurs de la colonne copiée
  8.     Dim ligne_fin As Integer
  9.     ligne_fin = ligne_debut + 12
  10.     Range(colonne_ou_copier & ligne_debut & ":" & colonne_ou_copier & ligne_fin).Select
  11.     Application.CutCopyMode = False
  12.     Selection.ClearContents
  13. End Sub


Quand j'exécute, j'ai une erreur à la 1ère ligne de la fonction: "select methode of Range class failed" ..
 
Toutes mes variables sont bonnes. La seule que je ne peux pas vérifier, c'est feuille_excel, et je pense que ça vient de là. Mais pourquoi ? :??:  
 
Merci!  :hello:  
 
P.S: vous verrez que j'ai pas tout à fait suivi ce que vous m'avez conseillé, mais ça correspond mieux à ce que je veux (vider que qqs cellules)


Message édité par Myway le 17-06-2004 à 15:00:57
n°767501
Myway
Posté le 17-06-2004 à 15:20:39  profilanswer
 

Pour faire plus simple (j'ai avancé encore dans mes tests), la ligne

Code :
  1. wsExcel.Columns("D:D" ).Select


placée juste après la déclaration et l'ouverture de l'objet excel (voir 1ère partie de code du post précédent) ne marche pas! (erreur : select methode of Range class failed)
 
Une idée ? :??:  
 :hello:

n°767606
JihemAir
Je sais pas
Posté le 17-06-2004 à 15:56:35  profilanswer
 

Je pense qu'il faut que la feuille soit active avant de sélectionner une colonne.
wsExcel.Activate


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°767649
Myway
Posté le 17-06-2004 à 16:12:42  profilanswer
 

JihemAir a écrit :

Je pense qu'il faut que la feuille soit active avant de sélectionner une colonne.
wsExcel.Activate


Merci beaucoup!
Pourtant c'est bizarre, j'ai un autre script quasiment identique, et là, pas besoin du .activate... Enfin bon, ça marche, c'est l'essentiel!
 
Encore merci!  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [excel] copie et insertion de colonnes

 

Sujets relatifs
Petit pb simple de macro excel[VBA][Excel] Rollover
double pb vb excelChanger le couleur d'une cellule d'un fichier Excel
Délimiteur dans Excel 97 (fichiers CSV) besoin d'aide en visual basic sur excel (base de données)
excel-->my SQLfusionnement des fichiers excel en java
[Résolu][PostgreSQL 7.4.2] pb d'insertion de caractères accentuésMulti insertion
Plus de sujets relatifs à : [excel] copie et insertion de colonnes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR