FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Modifier une macro
 

Modifier une macro

Il y a 262 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Modifier une macro
 
Plus d'informations

Bonjour,
Je suis nouveau sur votre site comme écrivain mais pas comme lecteur. On apprend beaucoup de choses.
Et je suis épaté devant certains programmeurs.
Cette fois-ci, au lieu de les lire, j'aurai besoin de leur connaissance.
Mais avant de demander de l'aide pour modifier ma macro, je voudrais savoir comment on fait pour la coder afin la poster comme vous le désirez.
Merci pour votre aide
Cdlt  

Profil : Pointeur
Plus d'informations

juste l'entourer des balise [code] et [/code ] (sans l'espace)


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

Merci KangOl
J'utilise donc Excel 2003.  
J'ai une base de données.  
A la ligne 161, je rentre des valeurs ( une valeur par colonne : C161 à AQ160=une valeur, pour B161 c'est une date ).  
En cliquant sur un bouton MISE A JOUR, je lance une macro qui va intégrer les valeurs de la ligne 161 dans la ligne 160 et décaler toutes les autres lignes vers le haut. ( la ligne 160 vers 159 et la 159 vers la 158 etc jusqu'à la ligne 90 vers la 89 et la 89 disparaissant )  
Question : est-il possible de modifier cette macro en permettant de faire remonter ces lignes jusqu'à la ligne 2 ?  
cad la ligne 89 passant en 88 et ainsi de suite.
En espérant ne pas avoir été trop confus dans les explications  
Je vous remercie par avance pour votre aide  
Cdlt  
 
Voici la macro ci-dessous  
 
 
 

Code :
  1. Sub MacroMISEAJOUR()
  2. '
  3. ' MacroMISEAJOUR Macro
  4. ' Macro enregistrée le 08/02/2004 par Christian
  5. '
  6. '
  7.     Range("B161:AQ161" ).Select
  8.     Application.CutCopyMode = False
  9.     Selection.NumberFormat = "0.00"
  10.     Range("A90:AQ161" ).Select     
  11.     Range("A161" ).Activate
  12.     Selection.Copy
  13.     Range("A89" ).Select     
  14.     ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
  15.         IconFileName:=False
  16.     ActiveWindow.SmallScroll Down:=71     
  17.     Range("B161:AQ161" ).Select
  18.     Selection.ClearContents
  19.     ActiveWorkbook.Save
  20. End Sub


 
 
edit KangOl: heureusement que je dit sans l'espace...


Message édité par platypus2 le 20-10-2007 à 23:03:06
zeb
Profil : Modérateur libre
Plus d'informations

Beurk. Quelle horreur. (Oui, je sais, c'est l'enregistreur de macro qui te l'a écrite)
 
Bon, en plus, elle ne fait pas ce que tu veux. :/
En fait, tu veux parcourir ta feuille de la ligne 89 à la ligne 160. Facile :

Code :
  1. Dim ligne As Integer
  2. For ligne = 90 To 160
  3.     ...
  4. Next


 
A chaque boucle, tu veux copier le contenu de ce qu'il y a en dessous :

Cells( ligne, colonne ).Value = Cells( ligne + 1, colonne ).Value


Et ce, pour toutes les colonnes de B (colonne 2) à AQ (colonne 43) :

Code :
  1. Dim colonne As Integer
  2. For colonne = 2 To 43
  3.     ...
  4. Next


 
Ben, y'a plus qu'à ....
 

Code :
  1. Dim ligne As Integer
  2. Dim colonne As Integer
  3. For ligne = 90 To 160
  4.     For colonne = 2 To 43
  5.         Cells(ligne, colonne).Value = Cells(ligne + 1, colonne).Value
  6.     Next
  7. Next


 
Maintenant, adapte ce code pour qu'il remonte à la ligne 2.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Bonjour à Tous,
Finalement, j'ai trouvé.
En fait dans ma macro ,j'ai remplacer A89 par A3 dans la ligne 11 et A89 par A2 dans la ligne.
Et celle fonctionne à merveille
Merci Zeb et KangOl pour votre aide
Et au plaisir de vous lire
Cdlt


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Modifier une macro
 

Annonces Google
Publicité
Les ressources relatives