excel - macro a executer sur chaque ligne d'une feuille

excel - macro a executer sur chaque ligne d'une feuille - VB/VBA/VBS - Programmation

Marsh Posté le 14-06-2006 à 11:48:14    

bonjour, est ce qu'il est possible d'enregistrer un macro sur une ligne, et de la réexecuter sur les autres lignes que je veux ?

Reply

Marsh Posté le 14-06-2006 à 11:48:14   

Reply

Marsh Posté le 14-06-2006 à 12:07:22    

bonjour,
Bien sur, c'est même pour ça qu'on enregistre des macros !
Mais ça nécessite parfois (souvent) quelques modifications.
 
Il faut être plus précis dans ton questionnement et nous montrer la macro enregistrée pour avoir une réponse plus pertinente.
A+

Reply

Marsh Posté le 14-06-2006 à 12:21:17    

voici mon code :
 
sub Macro1()
 
Dim onglet As Integer
 
For onglet = 2 To Sheets.Count
 
    Sheets("Synthese" ).Select
     
    'opération faite pour la ligne 8
     
    Range("AC8" ).Select
    ActiveCell.FormulaR1C1 = "='1'!R[36]C[-24]"
    Range("AD8" ).Select
    ActiveCell.FormulaR1C1 = "='1'!R[23]C[-22]"
    Range("AE8" ).Select
    ActiveCell.FormulaR1C1 = "='1'!R[31]C[-23]"
    Range("AF8" ).Select
    ActiveCell.FormulaR1C1 = "='1'!R[34]C[-24]"
    Range("AG8" ).Select
    ActiveCell.FormulaR1C1 = "='1'!R[36]C[-25]"
    Range("AG9" ).Select
     
    'j'aimerai refaire pareil pour les autres ligne de ma page
    'synthese et que le nom de la feuille '1' soit incrémenté
     
End Sub

Reply

Marsh Posté le 14-06-2006 à 13:28:58    

Ouch !
Euh... Là je me sens une petite faiblesse d'un seul coup !
ça doit être faisable mais je n'ai pas le truc en tête.
 
Les données sont modifiables donc tu ne peux pas pas coller directement la valeur, donc tu es obligé de passer par une liaison c'est ça ?
ça serait beaucoup plus simple si on pouvait mettre directement la valeur de chaque cellule de chaque feuille au lieu de faire un = ...
 
Sinon, va falloir attendre les grosses têtes !
A+


Message édité par galopin01 le 14-06-2006 à 13:29:32

---------------
roger
Reply

Marsh Posté le 14-06-2006 à 14:00:51    

oui , mais j'ai besoin de liaisons ... c'est pour eviter de saisir 2 fois les données !
en fait , le coeur de la question est :  peut on utiliser dans une fonction ... index par exemple, une variable "i" ....  
ex : =index(A1:D5;i;8)
et que le "i" varie en fonction de la feuille ou je me trouve ...
merci

Reply

Marsh Posté le 14-06-2006 à 14:26:49    

Juste pour essayer de d'aider....
tu veux faire quoi en clair, à part "Reproduire ce que je fais sur une ligne aux autres lignes et autres feuilles..."
 
Merci d'être un peu plus explicite

Reply

Marsh Posté le 14-06-2006 à 14:42:07    

voila :
 
La première page est une cartographie d'ascenseur (par lignes : Lieu, no id, site, ...)  
les pages suivantes sont des feuilles similaires qui font office de facture pour chaque équipement  
donc autant de feuilles que de lignes sur la premiere page donc d'ascenseurs
 
il y a 2 étapes :  
 
1 . Sur cette première feuille a droite ; j'ai un tableau synthèse dont les  
infos doivent être "liés" avec une formule "=" avec les feuilles suivantes du classeur que j'ai nommé (1,2,3,4,5 ...)
 
donc 1er appareil (1ere ligne, doit récupérer infos de feuille 1  
2eme appareil de feuille 2 ...  
 
donc l'ideal serait comme j'ai essayé de le faire au dessus d'enregistrer l'opération sur une ligne et d'executer la macro sur la ligne d'apres et de se référer a la feuille d'apres ... etc
 
2. à l'inverse :
sur ces fameuses feuilles "factures" , il y a un petit tableau  
(caractéristiques de l'appareil)  
j'aimerai pouvoir récupérer les donnés de la "cartographie" et l'injecter dans ce tableau la pour chacune des feuilles ...  
 
feuille 1 ; Caractéristiques de l'équipement 1 (lieu, no id, site, ...)  
feuille 2 ; Caractéristiques de l'équipement 2 ...  
 
j'ai essayé de faire une macro avec une inconnue "i" a laquelle j'injecte la valeur "activesheet.index" pour que je puisse utiliser le no de la feuille... et utiliser la fonction Index pour chercher les infos.  
et donc d'exécuter la macro pour chacune des feuilles... mais ...
 
En gros j'aimerai pour l'exécution de la macro sur la feuille "i" qu'elle transmette les infos de la ligne "j" de la cartographie
"i+1" ==> "j+1" ...
 
voici mon mail perso si tu veu ke je t'envoi le document ...
merci  

Reply

Marsh Posté le 14-06-2006 à 14:42:24    

mon mail : mlazrak@msn.com

Reply

Marsh Posté le 14-06-2006 à 14:48:51    

Entre temps j'ai vu ton autre post sur le même sujet.
 
Si ton problème c'est de passer en paramètre le nom de la feuille. Ca devrait t'aider
 
Sheets("Synthese" ).Select
    feuille = 1
    For i = 8 To 9
        CelAc = "AC" & i
        Sheets(feuille).Range(CelAc).Select
        ActiveCell.FormulaR1C1 = "='" & feuille & "'" & "!R[36]C[-24]"
    Next
Reste à modifier la formule "!R[36]C[-24]" en fonction de ce que tu veux récupérer
 
Ca t'aide ?

Reply

Marsh Posté le 14-06-2006 à 16:15:04    

j'ai essayé de faire ca :  
 
Sub Macro3()
 
Dim i As Integer, j As Integer
Sheets("CARTO" ).Select
 
 For i = 8 To 52
 
    feuille = i - 7
    j = 44 - i
     
    CelAc = "AC" & i
     
    Range(CelAc).Select
    ActiveCell.FormulaR1C1 = "='" & feuille & "'" & "!R[j]C[-24]"
Next
     
End Sub
 
 
mais dans la formule il ne veut pas reconnaitre le "j" ... c'est l'incrémentation de "j" qu'il me faut

Reply

Marsh Posté le 14-06-2006 à 16:15:04   

Reply

Marsh Posté le 14-06-2006 à 16:18:58    

Remplace
   ActiveCell.FormulaR1C1 = "='" & feuille & "'" & "!R[j]C[-24]"
par
   ActiveCell.FormulaR1C1 = "='" & feuille & "'" & "!R[" & j & "]C[-24]"
ca devrait aller mieux

Reply

Marsh Posté le 14-06-2006 à 16:25:23    

ohhh excellent !!! merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed