Arrêter une macro en boucle à la fin d'une liste

Résolu
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009 - 24 févr. 2009 à 13:21
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009 - 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

13 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
25 févr. 2009 à 10:24
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
3
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
24 févr. 2009 à 13:49
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 14:15
de tête, voir:

Cells.SpecialCells(xlCellTypeLastCell)
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
24 févr. 2009 à 17:58
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
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
25 févr. 2009 à 09:00
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 févr. 2009 à 09:07
é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...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 févr. 2009 à 09:09
Nous pouvons t'aider a réécrire ta macro.
mais qu'est-elle sensée faire ?
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 09:34
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 févr. 2009 à 09:37
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
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 09:51
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 févr. 2009 à 10:01
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 ?
0
cs_faustina Messages postés 11 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 25 février 2009
25 févr. 2009 à 10:45
le principe est là sauf que les donnés se trouve sur une même ligne 

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
25 févr. 2009 à 11:05
Merci beaucoup pour ton explication qui répond plus que bien à ma question!


bonne journée à vous

faustina
0
Rejoignez-nous