Annulation d'une opération via une macro

Bonjour.

J'ai cherché dans le site mais je ne trouve pas mon bonheur. Il n'est pas exclus que j'ai mal cherché....

Je souhaite faire une macro trés simple pour colorier une ligne excel, l'imprimer puis annuler mon coloriage et passer à la ligne suivante.

J'ai naivement débuté en lançant "l'utilitaire macro" pour qu'il enregistre mes actions. Manque de bol, la macro enregistre bien la sélection de la ligne, l'action de coloriage mais apres... rien. Voici le code généré...

Range("A6:G6").Select
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With

Merci par avance de votre précieuse aide.

Matthieu[/code]

Salut,

le code pour annuler la dernière manipulation avant d'effectuer une macro est le code suivant:

application.undo

Cependant, comme je viens de le dire, cela n'annule QUE la dernière action effectuée AVANT la macro. Ce qui signifie que tu ne peux pas annuler l'action de la macro avec ce code. Il faut donc trouver une alternative.

Peut être peux-tu remettre la ligne A6:G6 sans fond de couleur par exemple avec ce code:

Range("A6:G6").Select
    With Selection.Interior
        .ColorIndex = xlNone
    End With

Souri84

39pix13.zip (44.55 Ko)

Salut à tous,

matthieu, Je présume que tu veux faire ligne par ligne, en cliquant à chaque fois sur un bouton, et non pas en boucle ??

Combien de ligne (environ) ?

Peux-tu préciser !

Claude.

Bonjour Claude et merci à Souri84 pour les premiers élément de réponse.

Il s'agit d'une simple feuille xls contenant 26 lignes ( de 4 à 30). Je souhaite en fait pouvoir imprimer une feuille pour chaque ligne surligné.. (c'est trés chiant et tres con).

en gros:

ligne 4 surligné en jaune => impression
          Remise au format initiale de la ligne  4 puis
           ligne 5 surligné en jaune => impression
          Remise au format initiale de la ligne 5 puis
 etc etc...

edition:

En gros je souhaiterais faire un "run" de la macro et puis voilà. Je confesse que je suis un GROS fainéant...

Amicalement

Salut,

Pour faire fonctionner la macro, selectionne la premiere cellule de la première ligne à mettre en couleur.

Par exemple A4...

essaies ce code:

sub démarrer ()
Do ' boucle sur les cellules
If ActiveCell = "" Then 'si cellule active = "" alors sortir de la macro
Exit Sub
Else
ActiveCell.Select
Range(Selection, Selection.End(xlToRight)).Select 'selection de la ligne
'mettre en couleur
    With Selection.Interior
        .ColorIndex = 45
        .Pattern = xlSolid
    End With

    Range(Selection, Selection.End(xlDown)).Select ' selection de toutes les lignes
    Imprim = Selection.Address

'imprimer
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

'mettre en couleur
    With Selection.Interior
        .ColorIndex = xlNone
        .Pattern = xlSolid
    End With

ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

Je n'ai pas testé la ligne d'impression car l'imprimante ici ne fonctionne pas (sais pas pourquoi... ^^) mais le reste est OK...

A tester,

Souri84

[size=75]edit2: je viens de me rendre compte que la ligne concernant l'aperçu avant impression n'est pas bonne: elle est imprime de la ligne de la cellule active à la fin... ce qui signifie que si tu es sur la dernière ligne, à l'impression tu n'auras qu'une ligne...

Je retire donc la ligne de code qui était la suivante:

ActiveSheet.PageSetup.PrintArea = Imprim ' la région à imprimer est la selection précédente[/size]

Bonjour Souri84.

Je te remercie, ça convient plutôt bien. Je m'en vais donc l'affiner et une fois cela fait, je mets le flag résolu.

Bonjour à tous.

Je reviens avec beaucoup de retard mais je n'ai malheureusement pas eu le temps de répondre plus tôt.

La macro correspond mais j'ai un utilisateur qui souhaiterais pouvoir séléctionner une imprimante en début de processus différente de son imprimante par défaut. Est-il possible de créer une boite de dialogue idoine?

Cordialement

Matthieu

Salut,

essaies en insérant cette ligne au tout début de la macro puis une fois que l'utilisateur à choisi son imprimante, il fait fermer....

application.Dialogs(xlDialogPrint).Show

A te lire,

Souri84

Rechercher des sujets similaires à "annulation operation via macro"