BUG d'affichage suite à une macro

michaelexcel

XLDnaute Nouveau
Bonjour à tous,

Je mets en pièce jointe un fichier excel sur lequel je travaille et qui sera utile pour prendre note d'inscription à des ateliers-formations. J'ai un tableau qui permet par une macro "afficher" de montrer les inscriptions de l'atelier indiqué en H2 et par une macro "sauver" d'enregistrer les modifications que l'on aura fait sur ce tableau.

Le problème, c'est la macro "sauver". Elle fonctionne mais une fois réalisée, quand je modifie le tableau C4 : K18, j'ai un bug d'affichage. Une sorte de décalage d'une partie de l'image.

Je n'ai pas la moindre idée d'où le bug provient. Qqun pour un diagnostique?

D'avance un très grand merci !
 

Pièces jointes

  • Ateliers - Formations.xlsm
    39.5 KB · Affichages: 51

Lone-wolf

XLDnaute Barbatruc
Bonjour michael :), le Forum :)

Vu que tu as utilisé l'enregistreur et que celui-ci met des Select à chaque clique que tu fait, il est normal que ça cause problème; il faut donc nettoyer tes codes. Je te donne juste un exemple, parce-que en regardant ceux-ci, je ne sais pas où mettre les mains.

VB:
Application.ScreenUpdating = False

  With Sheets("AFFICHER")
         .Range("D27:K27").Copy
         Sheets("INSCRIPTIONS").Range("E2").PasteSpecial Paste:=xlPasteValues
        Application.CuteCopyMode = 0
    End with

    With Sheets("ListeModif")
        .Rows("3:3").Copy
        .Rows("2:2").Insert Shift:=xlDown
        Sheets("INSCRIPTIONS").Range("B3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
 

michaelexcel

XLDnaute Nouveau
Bonjour Lone-wolf,

Je te remercie pour ce retour. Ca éclaire des problèmes que je rencontre souvent. J'utilise en effet régulièrement l'enregistreur et je me doutais que j'allais devoir me mettre à toucher un peu plus à VBA.

J'ai deux questions sur le code que tu as noté.

- Application.ScreenUpdating = False -> Ca représente quoi?

- Application.CuteCopyMode = 0 ou = False -> C'est la même chose j'imagine?

Un grand merci pour cet apprentissage :)
 

Lone-wolf

XLDnaute Barbatruc
Re michael

ScreenUpdating sert au traitement des cellules plus rapide et évite de faire sauter les pages.
Application.CuteCopyMode = 0 supprime la sélection lors d'un copier-coller.
Shift:=xlDown insert une ligne en dessous de la cellule (Row("2:2") donc A2) et Shift:=xlUp au dessus. En ce qui concerne les feuilles masquées oui, il n'y a pas de souci et pour mieux faire déclare des variables.

Exemple
A mettre après Sub Macro1()
Dim WsAff As Worksheet, WsIns As Worksheet, WsListe As Worksheet

Set WsAff = Sheets("AFFICHER"): Set WsIns = Sheets("INSCRIPTIONS"):
Set WsListe =Sheets("ListeModif")

With WsAff
le code
End With

With WsListe
le code
End With
 

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T