Arrêter une macro en boucle à la fin d'une liste [Résolu]

cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 24 févr. 2009 à 13:21 - Dernière réponse : cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention
- 25 févr. 2009 à 11:05
bonjour à tous, mon problème est simple et pourtant je n'arrive pas a trouver une solution.
j'ai créer un programme qui répéte une macro suivant une liste je souhaite qu'elle s'arrête lorsqu'elle rencontre une cellule vide. je ne sais pas du tout comment mis prendre.
 ma macro utilise for n=-- to "end"
 merci de m'aider.
bonne journé a tous!

faustina
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
userrrqi115 181 Messages postés mardi 18 novembre 2008Date d'inscription 4 février 2011 Dernière intervention - 25 févr. 2009 à 10:24
3
Merci
Hello,
Si je reprend la macro, en éliminant le Do while + loop, ta macro fonctionnait mais le souci c'est l'impression de page blanches, non ?

Ceci fonctionne, stoppe dès qu'il rencontre la première occurence vide

For N = -3 To 5000
                   Range("N4").Select
            ActiveCell.FormulaR1C1 = "=R[" & CStr(N) & "]C18"
            If Activecell.value=0 then
            exit for
            else :
            Selection.Copy
            Range("N4").Select
            ActiveSheet.Paste
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
           end if
           Next N

Si le soucis est de suspendre l'impression si vide mais de balayer quand même les 5000 lignes et de valider l'impression que si non vide, il est préférable d'utiliser le code ci-dessous:

For N = -3 To 5000
                   Range("N4").Select
            ActiveCell.FormulaR1C1 = "=R[" & CStr(N) & "]C18"
            If Activecell.value<>0 then
            Selection.Copy
            Range("N4").Select
            ActiveSheet.Paste
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
           end if
           Next N

BR
USERRRQI115
Simple user
Great brain

Merci userrrqi115 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 78 internautes ce mois-ci

Commenter la réponse de userrrqi115
userrrqi115 181 Messages postés mardi 18 novembre 2008Date d'inscription 4 février 2011 Dernière intervention - 24 févr. 2009 à 13:49
0
Merci
Hello,

Do while not activecell.value =""
...
..
loop

permet d'exécuter la boucle tant que la cellule sélectionnée n'est pas vide.

BR

USERRRQI115
Simple user
Great brain
Commenter la réponse de userrrqi115
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 févr. 2009 à 14:15
0
Merci
de tête, voir:

Cells.SpecialCells(xlCellTypeLastCell)
Commenter la réponse de Renfield
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 24 févr. 2009 à 17:58
0
Merci
Salut,

autrement dit tu cherches la premiere cellule vide.

reponse ici http://www.vbfrance.com/forum/sujet-EXCELL-ADRESSE-PREMIERE-CELLULE-VIDE-DANS-COLONNE_802848.aspx
Commenter la réponse de bigfish_le vrai
cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 25 févr. 2009 à 09:00
0
Merci
bonjour à tous et merci d'avoir répondu à mon appel!
j'ai  dus mal à appliquer vos codes sur ma macro
voici mon programme:

Userrqi115,
j'ai essayer avec ce que tu m'a conseiller, sur ma macro ce qui donne:

Sub Macro2()
   
    For N = -3 To 5000
        Do While Not ActiveCell.Value = ""
            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
        Loop
    Next N
End Sub

Le problème est que le copier coller ne se fait plus!
je sais pas pourquoi? Comment dois je tourner ma macro pourque cela fonctionne? merci m'aider un peu plus...

faustina
Commenter la réponse de cs_faustina
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 févr. 2009 à 09:07
0
Merci
évites d'utiliser .Select ActiveCell et autre choses qui plombent les performances des macros

et induisent de facheux effets de bord.

j'ajouterais que l'utilisation du presse-papier, ici est inadaptée...

l'utilisateur perds ce qu'il contenait... au prix d'une macro qui traine...
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 févr. 2009 à 09:09
0
Merci
Nous pouvons t'aider a réécrire ta macro.
mais qu'est-elle sensée faire ?
Commenter la réponse de Renfield
cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 25 févr. 2009 à 09:34
0
Merci
j'ai créer une feuille "masque" qui par rechercheV vient récuperer des données dans un tableau classer par n° d'équipement,  la valeur rechercher étant la cellule N4. cette cellule ce présente sous forme de liste déroulante ainsi une liste des équîpements se trouve sur la colonne C18.


le but de cette macro est de pouvoir imprimer ce feuillet pour tout les équipements et non pas une part une.


je suis dispo pour répondre à toute vos questions!

faustina
Commenter la réponse de cs_faustina
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 févr. 2009 à 09:37
0
Merci
donc cacher, en quelques sortes une partie de la feuille...

pourquoi ne pas faire un click sur les menu d'excel

Données >Filtrer > filtre automatique
Commenter la réponse de Renfield
cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 25 févr. 2009 à 09:51
0
Merci
Non, le tableau ce trouve sur une autre feuille.


le masque est conçu pour une meilleur lecture. le principe est de choisir un équipement grace à la liste déroulante pour avoir les données sur cette feuille. on peut imprimer si l'on veut.il existe un seul masque,celui-ci se remplit par rapport à l'équipelment choisit. le problème c'est que j'ai besoin d'imprimer un exemplaire pour tout les équipements. ce qui induit une macro qui répéte l'impréssion en fonction du choix de la cellule. jusque là la macro fonctionne.( si je lui donne une plage de donné définit: copie-coller suivant une variable sur N4 et imprime) je voudrai que cette macro s'arrête lorsqu'elle arrive en bout de liste.
 est ce que je suis clair?
faustina
Commenter la réponse de cs_faustina
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 févr. 2009 à 10:01
0
Merci
j'essaie de résumer ce que j'ai saisi, je te propose un code dans la foulée.

tu as une feuille avec une liste d'equipements.

en tapant un critère en N4
tu va fouiner chaque ligne, pour n'extraire que les lignes qui vont bien, et les placer dans une autre feuille, prete a etre imprimée

est-ce bien cela ?
Commenter la réponse de Renfield
cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 25 févr. 2009 à 10:45
0
Merci
le principe est là sauf que les donnés se trouve sur une même ligne 

faustina
Commenter la réponse de cs_faustina
cs_faustina 11 Messages postés mercredi 18 février 2009Date d'inscription 25 février 2009 Dernière intervention - 25 févr. 2009 à 11:05
0
Merci
Merci beaucoup pour ton explication qui répond plus que bien à ma question!


bonne journée à vous

faustina
Commenter la réponse de cs_faustina

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.