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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Réorganiser une sélection de cellule [vba]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réorganiser une sélection de cellule [vba]

n°1610547
gooopil
pfiew
Posté le 11-09-2007 à 11:37:31  profilanswer
 

Hello,
 
Voici mon problème :
J'ai un fichier excel (A) où des données sont saisies. Une fois saisies, ces données sont dispatchées à la main vers une série de fichiers (Bs) excel grâce à un copier-coller tout bête. Important pour la suite, la structure de ces fichiers n'est pas modifiable.  
Tout allait bien, jusqu'à hier quand un des managers a décidé de changer la structure des fichiers Bs qui reçoivent les copier-coller... Il y a des nouvelles colonnes, l'ordre n'est plus le même etc.
 
Ma solution :
Rajouter une macro dans A qui va, à partir de la sélection d'une ligne:
- Restructurer les données en introduisant des colonnes vides, en mettant les bonnes colonnes au bon endroit pour que ça corresponde au format des Bs
- Copier ces données dans le clipboard et après il reste plus qu'à aller dans le fichier Bs et à faire Ctrl+V
 
Problème :
Copier une plage de cellule dans le clipboard n'est pas un pb, c'est plutôt la réorganisation à la volée des cellules. Je vois pas comment manipuler les données pour "recréer" la plage de cellule une fois que j'ai récupéré la plage de cellule. Par exemple :
Source : id / Nom / Date / Machin
Destination : id / blanc / Date / Nom / Machin
La seule solution (pas terrible) que je vois, c'est que ma macro copie les cellules dans un endroit non-visible de la feuille en les réorganisant, puis copie cette nouvelle plage dans le clipboard...
 
Merci :)

mood
Publicité
Posté le 11-09-2007 à 11:37:31  profilanswer
 

n°1610596
pyrof
Posté le 11-09-2007 à 13:50:04  profilanswer
 

Bonjour,
 
C'est pas très clair,  mais le problème est que tu as fait une macro qui fait des copier coller d'une cellules dans une autre feuille, et que la présentation de celle-ci à changé.
Dans ta feuille de destination, donne un nom à chaque cellule de la tétière
pour exemple Nom
 
col =sheets(feuil2).range("Nom" ).column : permet de récupérer le numéro de la colonne nom
 
Je présume que tu connais la ligne  
 
sheets("feuil2" ).cells(ligne, col)=sheets("feuil1" ).cells(x,y)
 
Par ce principe, si on ajoute des colonnes dans la feuille 2, notre formule est toujours bonne
 
J'espère que cela va résoudre ton problème

n°1610645
gooopil
pfiew
Posté le 11-09-2007 à 15:17:47  profilanswer
 

Hello,
Le problème c'est qu'il n'y a pas de macro au départ. La copie se fait à la main en copier-coller, et ça nous convenait très bien
La macro que je dois faire pour résoudre ce problème ne peut pas juste copier dans l'autre feuille Bs (je ne peux pas savoir quelle est cette autre feuille, je sais juste qu'elle a une certaine structure), mais simplement récupérer les bonnes infos et les mettre dans le presse-papier pour un collage en Ctrl+V.
De plus, comme je l'ai dit, je ne peux pas modifier les feuilles Bs.


Message édité par gooopil le 11-09-2007 à 15:18:13
n°1610651
tegu
Posté le 11-09-2007 à 15:30:29  profilanswer
 

La solution que tu proposes toi-même est la bonne.
Tu ne la trouves pas terrible parce que tu n'as peut-être pas l'habitude de travailler sur des documents Excel complexes (10 classeurs de 20 onglets chacun, avec des références croisées et des calculs statistiques et des formats conditionnels et des macros d'importation/exportation, par exemple).
Moi ça ne me choque pas du tout.
Ne jamais oublier que WorkSheet, ça veut dire feuille de travail :)

n°1610659
gooopil
pfiew
Posté le 11-09-2007 à 15:37:06  profilanswer
 

tegu a écrit :

La solution que tu proposes toi-même est la bonne.
Tu ne la trouves pas terrible parce que tu n'as peut-être pas l'habitude de travailler sur des documents Excel complexes (10 classeurs de 20 onglets chacun, avec des références croisées et des calculs statistiques et des formats conditionnels et des macros d'importation/exportation, par exemple).
Moi ça ne me choque pas du tout.
Ne jamais oublier que WorkSheet, ça veut dire feuille de travail :)


Je la trouve pas terrible parce que ça fait faire une lecture/écriture en plus, alors qu'il devrait (logiquement) être possible de lire puis de transformer directement, sans réécrire puis relire...[:spamafote]
Par contre c'est vrai que je n'ai pas l'habitude d'Excel, donc encore moins des situations complexes avec Excel :D

n°1610704
tegu
Posté le 11-09-2007 à 16:50:20  profilanswer
 

Plusieurs solutions coexistent souvent pour faire la même chose.
C'est plus une question de cohérence avec le reste, les perspectives de maintenance ou la lisibilité du code qui fait pencher la balance.
À toi de voir si tu veux optimiser les perfs en y passant plusieurs jours de codage, ou te contenter de perfs moindres (et encore) en moins de temps.
En PHP les fonctions de tri de tableaux permettraient certainement d'envisager une solution de réorganisation à la volée.  
VB est beaucoup plus pauvre en ce domaine et il est plus facile d'utiliser les fonctions Excel.
Reste que quelqu'un te trouvera peut-être une meilleure idée.

n°1610716
gooopil
pfiew
Posté le 11-09-2007 à 17:09:31  profilanswer
 

tegu a écrit :

Plusieurs solutions coexistent souvent pour faire la même chose.
C'est plus une question de cohérence avec le reste, les perspectives de maintenance ou la lisibilité du code qui fait pencher la balance.
À toi de voir si tu veux optimiser les perfs en y passant plusieurs jours de codage, ou te contenter de perfs moindres (et encore) en moins de temps.
En PHP les fonctions de tri de tableaux permettraient certainement d'envisager une solution de réorganisation à la volée.  
VB est beaucoup plus pauvre en ce domaine et il est plus facile d'utiliser les fonctions Excel.
Reste que quelqu'un te trouvera peut-être une meilleure idée.


Tout à fait d'accord  :jap: Vu le peu de temps que j'ai, il est fort probable que je me dirige vers la solution de copie/recopie, même si l'autre ne doit pas être si compliquée que ça... Je manque juste des connaissances en VB ;)


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

  Réorganiser une sélection de cellule [vba]

 

Sujets relatifs
[Excel] Envoyer le contenu d'une cellule XL par mail ?Capitaliser la sélection (environnement Windows)
Effacer le contenu d'une cellule contenant #DIV/0![vba] selection tableau
Selection automatique du serveurretour à la ligne dans formulaire de selection
un dossier avec plusieurs fichiers à traiter : console casséeModification d'une fonction pour selectionner une plage de cellule
Une icone dans une cellule de JTable[Macro Excel] Sauvegarder une sélection en fichier plat
Plus de sujets relatifs à : Réorganiser une sélection de cellule [vba]


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