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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] Affectation de variable/Macro copier coller Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Affectation de variable/Macro copier coller Excel

n°2084475
Klivan
Ach... Encore raté...
Posté le 24-06-2011 à 09:55:08  profilanswer
 

Bonjour à tous
 
En préambule, je dois dire que je n'ai quasiment jamais fait de programmation auparavant, excepté quelques bribes en prépa, et que je dois m'y mettre suite aux aléas d'un stage. Je vous prie donc de m'excuser pour la très haute teneur noobesque de ce post :jap: .
 
Voici ma problématique : je dispose de tableaux croisés dynamiques issus d'une base de données msie à jour fréquemment, et je désire copier certaines données dans une autre feuille qui servirait d'historique, à la suite des données précédentes, en y mettant la date et en modifiant la mise en forme (suppression de l'italique par exemple).
 
J'en suis arrivé après maintes recherches à écrire le code suivant
 

Code :
  1. Sub Historique()
  2.     Worksheets("PropCom" ).Range("B12:G12" ).Copy Destination:=Worksheets("Historique" ).Range("B15" ).End(xlDown).Offset(1)
  3.     Sheets("Historique" ).Select
  4.     Range("A1" ).Select
  5.     Selection.End(xlDown).Select
  6.     ActiveCell.Offset(1, 0).Select
  7.     ActiveCell.End(xlDown).Offset(1).FormulaR1C1 = "=NOW()"
  8.     Selection.NumberFormat = "[$-409]dd/mm/yyyy;@"
  9. End Sub


Le soucis, c'est que je ne connais pas la syntaxe pour modifier la mise en forme dans la ligne 2, et que je n'arrive pas à trouver une solution simple et élégante.
 
C'est pourquoi j'avais pensé (attention le freestyle commence [:cupra] ) à créer 2 variables de type Range, à affecter dans l'une ce que je désire copier dans l'historique, puis à affecter cette variable dans une autre, à faire les modifs sur cette variable (là je connais la syntaxe) et à la copier ensuite dans l'historique.
Cela me donnerait
 

Code :
  1. Dim Origin As Range
  2.     Dim Resultat As Range
  3.    
  4.    
  5.     With ThisWorkbook.Worksheets("PropCom" )
  6.         Set Origin = .Range("B12:G12" )
  7.     End With
  8.    
  9.     Set Resultat = Origin
  10.        
  11.     With Resultat
  12.         .HorizontalAlignment = xlCenter
  13.         .Font.Size = 10
  14. etc...
  15.         End With
  16.    
  17.     Resultat.Copy Destination:=Worksheets("Historique" ).Range("B15" ).End(xlDown).Offset(1)


Problème : si la mise en forme est bien modifiée, celle dans le tableau d'origine l'est aussi!
Cela signifie-t-il que j'ai lamentablement échoué à comprendre ce qu'était l'affectation d'une variable  [:tinostar] ?
Je pense qu'une solution bien plus simple existe, mais voilà, je pense avoir atteint mes (faibles) limites en programmation, quelqu'un aurait-il la bonté de m'aider  :jap: ?
Merci d'avance


Message édité par Klivan le 24-06-2011 à 16:55:02

---------------
We are the knights who say : Ni! / 'Bye Julfisher, so long Shepard :(
mood
Publicité
Posté le 24-06-2011 à 09:55:08  profilanswer
 

n°2084498
fred777888​999
Posté le 24-06-2011 à 11:20:14  profilanswer
 

Non, tu as a peu pres bien compris. Le seul probleme est que ta variable designe un objet (le range) et que quand tu fais un 'set', tu fais pointer une autre variable sur le meme objet. Rien d'etonnant alors a ce que la modification de l'une (d'un des objets) affecte egalement l'autre.
Une solution simple serait de faire ta copie avant et de pointer sur le resultat pour faire tes modifs.

n°2084507
Klivan
Ach... Encore raté...
Posté le 24-06-2011 à 11:32:57  profilanswer
 

Merci de ta réponse  ;)  
 
Dans ce cas là, comment faire justement pour "pointer" vers ce que je copie?
 
Copier, puis faire une sélection de la dernière ligne occupée et la modifier?
 
Je dois avouer que là je ne vois pas trop comment m'y prendre  :sweat:


---------------
We are the knights who say : Ni! / 'Bye Julfisher, so long Shepard :(
n°2084617
fred777888​999
Posté le 24-06-2011 à 15:08:52  profilanswer
 

:) Tu as bien la bonne reponse, tu selectionne, tu copie et tu reselectionne ce que tu as copie pour faire la mise en forme :)

n°2084679
Klivan
Ach... Encore raté...
Posté le 24-06-2011 à 16:12:49  profilanswer
 

Solution trouvée, merci beaucoup pour ton aide précieuse  ;)  
 
S'il y a des débutants comme moi qui d'aventure parcourent un jour ce topic, je peux poster le code s'ils le demandent


---------------
We are the knights who say : Ni! / 'Bye Julfisher, so long Shepard :(
n°2084681
SuppotDeSa​Tante
Aka dje69r
Posté le 24-06-2011 à 16:13:39  profilanswer
 

Le mieux c'est de le poster directement ;)


---------------
Soyez malin, louez entre voisins !
n°2084706
Klivan
Ach... Encore raté...
Posté le 24-06-2011 à 16:28:51  profilanswer
 

Ok, voici:
 
Macro Excel pour copier coller en changeant la mise en forme

Code :
  1. Sub Historique()
  2.     Worksheets("PropCom" ).Range("B12:G12" ).Copy Destination:=Worksheets("Historique" ).Range("B15" ).End(xlDown).Offset(1)
  3.     Sheets("Historique" ).Select
  4.     Range("B15" ).Select
  5.     Selection.End(xlDown).Select             'sélection de la dernière cellule en dessous de la cellule B15'
  6.     i = ActiveCell.Row                   
  7.     Range("B" & i, "G" & i).Select           'avec la ligne précédente, permet d'étendre la sélection à une plage de cellule'
  8.    
  9.     With Selection                           'c'est ici que se fait la modification de tous les paramètres souhaités'
  10.         .HorizontalAlignment = xlCenter      'ici l'alignement'
  11.         .Font.Size = 10                      'ici la taille de la police'
  12.         .Font.Name = "Calibri"               'ici le nom de la police'
  13.         .Font.Bold = False                   'et ici la désactivation de la mise en gras'
  14. 'etc...'
  15.     End With
  16. End Sub


 
Je pense qu'il y a largement moyen de l'améliorer, mais au moins c'est fonctionnel  [:tinostar]  [:cupra]
 
Edit: Rajout d'un titre et d'explications au sein du code pour les curieux/débutants  :)


Message édité par Klivan le 24-06-2011 à 16:53:38

---------------
We are the knights who say : Ni! / 'Bye Julfisher, so long Shepard :(

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

  [Résolu] Affectation de variable/Macro copier coller Excel

 

Sujets relatifs
Résolu : variable modifiée par l'affectation d'une autre variableCréation d'une variable avec echo et affectation d'une valeur
Probleme affectation a une variablevariable numérique et affectation aléatoire
Pb sous PL/SQL : Affectation d'une valeur à une variableaffectation de variable PHP -> vers var JS
Affectation variable globale[GAWK] Affectation d'une variable dynamique
[Javascrip & PHP] Affectation de variable[XSL] Affectation de variable
Plus de sujets relatifs à : [Résolu] Affectation de variable/Macro copier coller Excel


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