Simplifier un code [Résolu]

Signaler
Messages postés
8
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
30 octobre 2010
-
Messages postés
8
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
30 octobre 2010
-
Bonsoir,

Aprés beaucoup de travail personnel et de recherche sur le net, j'ai fait ce code :

Sub SupprimerArticles()

Dim A As String
A = ActiveSheet.ListBoxArticles.Value
If MsgBox("Confirmer la suppression", vbYesNo, "SUPPRESSION") = vbYes Then
    Sheets("Articles").Select
      Dim rcel As Range
      Range("A:A").Select
      For Each rcel In Selection
          If rcel.Value = A Then
             rcel.EntireRow.Delete Shift:=xlUp
           End If
      Next rcel
    Sheets("Saisies").Select
    Range("B5").Select
End If

End Sub

Je voudrai savoir s'il est possible de le simplifier et surtout sur la partie soulignée en gras.
Je m'explique :
Le bouton sur lequel je clique pour activer la macro est dans la page "Saisies".
Quand je clique dessus, La page "Articles" apparait un instant puis je reviens sur la page "Saisie".
Au vue du code, je comprend que c'est normal mais c'est pénible.
Je voudrait donc que la ligne contenant la variable A dans la feuille "Articles" soit supprimé sans que la page n'apparaisse.
Sans qu'elle soit "selectionner".
J'ai essayé avec with et End with mais ça ne marche pas. Je n'utilise peut etre pas la bonne syntaxe.

Pouvez vous m'aider ?

3 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Tu peux soit utiliser ce que Jack voulait dire, je pense, ...
Application.ScreenUpdating = False
ce qui empêche de voir les changements de sélections ou pages, qui fige dans un certain sens l'écran...

Tu peux aussi spécifier le nom de la feuille dans laquelle tu veux modifier des choses
ex: Tu es dans Feuil1 et tu veux modifier quelque chose dans Feuil2 sans l'afficher.
Sheets("Feuil2").Range("A1") = "Allo"
    Msgbox Sheets("Feuil2").Range("A1")
Sheets("Feuil2").Range("A1") = "Modifié"

    Msgbox Sheets("Feuil2").Range("A1")

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Ok, je sais qu'il a une fonction qui permet de figer la visu puis de la libérer, mais je ne me rappelle plus laquelle.
Ca t'avance pas, mais essaye de chercher de l'aide sur le mot "figer"

Tu es sous Excel = VBA, pas .Net (catégorie 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
8
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
30 octobre 2010

Bon, j'ai choisi la méthode Application.ScreenUpdating = false

Merci pour votre aide.