Macro 'tant que ... faire

Bonjour, j'aimerais utiliser la fonction :

tant que A(i) > 0 faire que la case B1 reçoive la valeur de A(i) et lancer la macro pour B1 pour chaque cas.

Exemple :

A1=1

A2=3

A3=0

A4=2

Je clique sur le bouton associé à la macro que je souhaite créer.

ça me fait B1=1 me lance la macro associée à B1 = 1

puis B1=3 me lance la macro associée à B1= 3

puis B1=2 me lance la macro associé à B1= 2 (ça me saute B1=0 car n'est pas supérieur à 0)

Evidemment je souhaite avoir un tant que car je peux aussi bien avoir 3 cas come dans l'exemple ci dessus que 500 cas !

Merci de me venir en aide en me donnant une esquisse de code.

Cordialement.

Bonjour,

Evidemment je souhaite avoir un tant que car je peux aussi bien avoir 3 cas come dans l'exemple ci dessus que 500 cas !

Et tu veux mettre 500 macros dans ton fichier ???? une véritable usine à gaz alors.

Ce qu'il faut faire c'est une macro avec des actions suivant la valeur de B1

Exemple :

Select case range("B1")

case = 1

...instruction

Case = 2

...instruction

End select

Mets un fichier car ce sera plus facile de comprendre ton souci.

Amicalement

Non pas vraiment une usine à gaz mais simplement des macros d'impression. J'espère que le fichier ne sera pas trop compliquer à comprendre.

L'utilité du fichier est de prévenir des locataires lors du début des travaux chez eux par un courrier.

l'onglet planning me permet de mettre les numéros de logements par rapport aux travaux et dates.

l'onglet data sert de base de donnée des locataires (adresse nom, ...)

l'onglet TX sert de trame de courrier que je veux imprimer.

l'onglet z_z sert de fichier de récupération du planning.

Ce que j'aimerais obtenir c'est qu'après avoir mis mes n° dans le planning, j'aille dans l'onglet z_z je fasse un tri des "N°"non vides (bouton tri) (pas la peine d'imprimer des courrier pour le logement 0 qui n'existe pas)

puis une impression des courriers pour ces même numéros non vides en prenant le "code" associé au "N°" et en le mettant dans l'onglet TX en haut à gauche.

ouf on y arrive dites moi si vous n'avez pas compris

-- 12 Nov 2010, 16:49 --

ps j'ai ajouter le fichier mais je ne le vois pas à l'écran l'avez vous ?

Bonjour,

Non, le fichier n'est pas passé

Amicalement

Claude

joindrefichier

120 Ko c'est vraiment petit !

Bonjour,

Question bête : et si tu le faisais à l'aide d'un publipostage dans Word ?

Tu utilises ta base, tu peux filtrer dans Word pour ne pas prendre les 0, tu fais une lettre type et tu obtiens une fusion avec les courriers adaptés à chaque travaux.

A+

-------------------------> PUBLIPOSTAGE <----------------------------- ???????

connais pas comment ça marche ? je vais esssayer de faire des recherches sur le net ! Si vous avez déjà des sites ou blogs pas mal expliquant bien comment ça marche. Bon pour tout vous avouer, le faire par excel, c'était plus simple et ça sera plus facile d'utilisation pour une personne qui ne gère pas l'informatique (d'où l'avantage de la macro associée à un bouton qui fait tout le boulot !). Donc je préfererais obtenir une solution 100% excel, mais bon si il n'y a pas je me mettrais à publipostage.

Bonjour à tous,

Vois si çà te va

fichier: https://www.excel-pratique.com/~bigfiles/doc/j_grison_Filtre.zip

C'est un filtre élaboré (critère en P1:P2)

Sub Tri_Filtre()
'Macro par Claude Dubois pour "j.grison" Excel-Pratique le 16/11/10
    With Sheets("z_z").Range("BaseImprime")
        On Error Resume Next
        .ShowAllData
        On Error GoTo 0
        '--- tri  colonne C ---
        .Sort Key1:=Range("c1"), Order1:=xlDescending, _
        Header:=xlYes, OrderCustom:=1, MatchCase:=False
        '--- filtre colonne C (>0) ---
        .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        .Range("p1:p2"), Unique:=False
    End With
End Sub

J'ai nommé la plage "BaseImprime"

Amicalement

Claude

ok donc ici l'interet de cette macro était de trier tous les nom les logements de manière à garder que les non nuls.

Maintenant le soucis est : comment en un bouton, imprimer tous les courriers restants, après avoir cliqué sur le bouton "tri et filtre".

Et si faisable, comment réunir les deux boutons : "tri et filtre" et le bouton dont je parle dans le paragraphe ci dessus.

Merci beaucoup.

re,

Vu ta demande, le tri et le filtre ne servent à rien,

si c'est pour imprimer les feuilles "TX" ayant un N° >0, la macro pourrait être comme ci-dessous

Attention:

1) Tes formules en feuille "TX" me semble fausses (voir correction)

2) lancer une impression de 70 documents est risqué (si bourrage papier ou autre)

ici, je fais une simulation pour tests

Sub ImprimeFeuillesTX()
Dim Lg%, i%
Sheets("z_z").Activate
    Lg = Range("c65536").End(xlUp).Row
    For i = 2 To Lg
        If Cells(i, 3) > 0 Then
            With Sheets("TX")
                .Cells(2, "i") = Cells(i, 2)
                If Not IsError(.Range("f8")) Then
                    '.PrintPreview 'aperçu
                    '.PrintOut copies:=1
                    MsgBox ("imprime code ligne " & i) 'ligne pour tests
                End If
            End With
        End If
    Next i
End Sub

Amicalement

Claude

26j-grison-filtre2.zip (119.85 Ko)

grrrrr ! mon message s'est effacé, obligé de le recommencer !

1) J'ai regardé et effectivement les formules ne sont plus les mêmes que sur mon fichier de départ.

Je rejoins le fichier de départ, mais celui ci est sans les dernières macro qe vous avez pu inclure.

L'idée du fichier de départ, était d'associer à chaque case du tableau de planning, un code.

En fonction de ce code, je pouvais retrouver le titre de la colonne (la journée), le titre de la ligne (le lot concerné), et le numéro du logement.

Après avec le numéro du logement, les données perso du locataire.

en mettant le code correspondant à droite (partie grise) de la feuille TX, toute la feuille se remplie automatiquement.

2) Pour la macro je l'ai testé et une boite d'information apparait à plusieur reprises, mais rien ne s'imprime.

faut il associé le nom de l'imprimante à la macro ou est ce que ça s'imprime directement avec l'imrpimante selectionné préalablement 'par défaut'. Dans ce cas pourquoi ça ne fonctionne pas ?

C'est vrai que lancer 70 impression, c'est un risque, mais je me vois mal cliqué 70 fois sur un bouton en ayant attendu à chaque fois que la feuille sorte. En plus c'est destinné à un gros photocopieur de bureau donc à prioris pas de problèmes particuliers, et ça c'est chouette !

-- 17 Nov 2010, 11:38 --

Bonjour,

en mettant le code correspondant à droite (partie grise) de la feuille TX, toute la feuille se remplie automatiquement

merci, j'avais compris !

il n'empêche que tes formules RECHERCHEV ne sont pas écrites dans les règles de l'art, mais bon, çà marche !

à quoi sert ton dernier fichier joint ?

Pour que çà imprime, réactive cette ligne en supprimant l'apostrophe devant

.PrintOut copies:=1

et supprime la ligne de test

MsgBox ("imprime code ligne " & i) 'ligne pour tests

Je maintiens que le tri et le filtre sont inutiles.

Sub ImprimeFeuillesTX()
Dim Lg%, i%
Sheets("z_z").Activate
    Lg = Range("c65536").End(xlUp).Row
    For i = 2 To Lg
        If Cells(i, 3) > 0 Then
            With Sheets("TX")
                .Cells(2, "i") = Cells(i, 2)
                If Not IsError(.Range("f8")) Then
                    '.PrintPreview 'aperçu
                    '.PrintOut copies:=1
                    MsgBox ("imprime code ligne " & i) 'ligne pour tests
                End If
            End With
        End If
    Next i
End Sub

Amicalement

Claude

rien à dire parfait !!!

Bonjour

a resolu3
Rechercher des sujets similaires à "macro tant que"