Repeter une macro selon une variable

Signaler
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009
-
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009

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
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009

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
Messages postés
11
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
25 février 2009

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