Repeter une macro selon une variable

cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009 - 18 févr. 2009 à 10:56
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009 - 23 févr. 2009 à 10:40
bonjour a tous ,
je souhaite créer une macro qui me permetterai de répéter une impression en modifiant une variable situer à la cellule "N4:O4" . la variable est sous forme de liste déroulante qui se trouve sur la plage R1: R20.
 j'ai essayer de poser une variable n de la manière suivante:
For n -3 To n 17


    Range("N4:O4").Select
    ActiveCell.FormulaR1C1 = "=R[n]C[4]"
    Range("N5:O5").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


Next n

seulement la macro ne reconnait pas l'objet je suppose que la définition de n n'est pas exact je n'arrive pas à trouver une autre solution. Pourrait on m'aider sur cette macro qui commence à bouillonner mon cerveau!!! si cela peut vous aider j'ai essayer d'enregistré cette macro pour 2 impression voici ce qui à été écrit :

Sub Macro2()


    Range("N4:O4").Select
    ActiveCell.FormulaR1C1 = "=R[-3]C[4]"
    Range("N5:O5").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Range("N4:O4").Select
    ActiveCell.FormulaR1C1 = "=R[-2]C[4]"
    Range("N5:O5").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

merci de votre aide faustina

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 févr. 2009 à 19:50
Salut
Dans ta ligne 
   ActiveCell.FormulaR1C1 = "=R[n]C[4]"
'n' est une variable. Il faut donc la ressortir de la chaine de caractères :
   ActiveCell.FormulaR1C1 = "=R[" & CStr(n) & " ]C[4]"

Le CStr est là pour être précis dans le style de conversion numérique vers chaine.
Si tu ne le mets pas, tu risques d'avoir un espace devant le chiffre : emplacement d'un hypothétique signe "+", et un espace rique d'être mal interprété par Excel.

Pour info : Le VB de Excel est du VBA, pas du .Net --> Catégorie de la question modifiée

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
19 févr. 2009 à 08:36
Bonjour,
Je te remercie pour ton aide ainsi que pour la rapidité de ta réponse. J'ai ressortie 'n' de la chaine comme tu me la expliqué précedemment, cependant le message d'erreur s'affiche toujours: erreur "1004" pour" identification de l'objet. "
Pourrait tu m'aider une fois de plus?
 
Bonne journée

 faustina
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
19 févr. 2009 à 11:11
rebonjour,


en bidouillant j'ai essayer de definir ma variable comme suivant:


Dim maVariable as integer


maVariable = n


for n= -- to n=--


mais il y a toujours un problème dans mon programme. 

faustina
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
20 févr. 2009 à 15:35
Re
Sur quelle ligne as-tu cette erreur ?
Essye d'être plus précis sur le contenu du message, car il y ressemble, mais n'est pas complet.
S'il te demande un obet, c'est qu'il manque la sélection de la feuille ou de l'objet avant de procéder.
Non, un For-Next n'accepte pas cette dernière syntaxe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
23 févr. 2009 à 10:07
bonjour bonjour,


j'ai corriger ma macro celleci fonctionne à merveille!


Sub Macro2()


For N = -3 To 1
        Range("N4").Select
        ActiveCell.FormulaR1C1 = "=R[" & CStr(N) & "]C18"
        Selection.Copy
        Range("N4").Select
        ActiveSheet.Paste
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
       
    Next N
End Sub
 
maitenant j'aimerai que ma macro s'arrête à la fin de la liste. soit quand il rencontre une cellule vide.
je connait une formule mais je ne dois pas l'appliquée correctement car la macro ne s'arrête pas.
il s'agit de dire:

For N= -3 to range("R6000").End(xlUp).Row

Ma formule est elle celle a utilisée? que dois je modifier ou rajouter pour qu'elle fonctionne sachant que ma liste se trouve à la colonne R? 
 merci pour tout tes conseils!!

faustina
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
23 févr. 2009 à 10:40
la faute est sur le n° de la range.  voici la formule corriger:

    For N= -3 to range("C18").End(xlUp).Row

         Range("N4").Select
        ActiveCell.FormulaR1C1 = "=R[" & CStr(N) & "]C18"
        Selection.Copy
        Range("N4").Select
        ActiveSheet.Paste
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
       
    Next N
End Sub

 Encore merci pour ton aide précieuse!!

faustina
0