Problème avec macro de masque de ligne

enzo0506

XLDnaute Nouveau
Bonjour,

le contexte général: avec mes petites mains et le peu de connaissances en VBA que je possède, j'ai mis au point une feuille excel permettant à mes collègues et moi-même de pouvoir gérer un dossier complet d’étude d'hydraulique (BE environnement et hydraulique).

Le contexte particulier : cette feuille se présente comme un pas à pas (de haut en bas) ; les choix effectués et les données renseignées à l'amont permettent à la feuille de renvoyer les résultats rechercher et surtout, par l’intermédiaire d'une macro de masque de ligne, de s'adapter en fonction.

Le problème : systématiquement, à chaque fois q'une cellule est renseignée, la feuille se déplace automatiquement vers la première cellule (liste de choix - ligne 223) étant la cible d'une macro masque de ligne : ça devient penible de devoir remonter dans la feuille après avoir renseigner chaque cellule.

La question (implicite) : existe-t-il un moyen de prevenir cet effet ? J'ai essayé d'introduire le couple "Application.ScreenUpdating = False - Application.ScreenUpdating = True" dans ma macro, sans effet.

Exemple de macro utilisée :

Public Function masquecell2()
Dim y As String
Range("B223").Select
y = ActiveCell.Value
If y = "Canalisation" Then
Rows("238:256").EntireRow.Hidden = True
Rows("224:237").EntireRow.Hidden = False
Else
Rows("238:256").EntireRow.Hidden = False
Rows("224:237").EntireRow.Hidden = True
End If
End Function

Merci à ceux qui ont pris la peine de lire jusqu'ici mes soucis ;).

Merci d'avance à ceux qui prendront le temps de me répondre.

A bientôt.

Jeuple

(Re)bonjour le forum,

je reviens vers vous : ma macro "masque de ligne" ne s’exécute pas si parmi mes lignes "cibles" j'ai des cellules protégées.

Existe-t-il un moyen "simple" de contourner le problème en considérant qu'il est sine qua none pour moi de pouvoir protéger le contenu de certaines cellules et pas d'autres.

Merci d'avance.

Jeuple EL Enzo
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème avec macro de masque de ligne

Bonjour Enzo (Jeuple), bonjour le forum,

Si cela ce fait automatiquement à chaque nouvelle édition d'une cellule, il doit y avoir une macro événementielle Change dans le composant de l'onglet concerné. Le code que tu nous donnes est celui d'une fonction personnalisée mais pas d'une macro qui s'effectue selon un événement donné. Sans un fichier exemple en pièce jointe difficile de t'aider davantage...
 

enzo0506

XLDnaute Nouveau
Re : Problème avec macro de masque de ligne

(Re)bonjour,

problème résolu grâce aux codes suivants :

Dans un module mes 2 macros de "masque de ligne" selon critère :

Public Function masquecell()
Dim x As String
Range("C93").Select
x = ActiveCell.Value
If x = "INFILTRATION" Then
Rows("95:126").EntireRow.Hidden = True
Rows("127:164").EntireRow.Hidden = False
Else
Rows("95:126").EntireRow.Hidden = False
Rows("127:164").EntireRow.Hidden = True
End If
End Function

Public Function masquecell2()
Dim y As String
Range("B223").Select
y = ActiveCell.Value
If y = "Canalisation" Then
Rows("238:256").EntireRow.Hidden = True
Rows("224:237").EntireRow.Hidden = False
Else
Rows("238:256").EntireRow.Hidden = False
Rows("224:237").EntireRow.Hidden = True
End If
End Function

Dans la feuille concernée la condition d’exécution :

Const pls = 93
Const dls = 223
Const pcs = 3
Const dcs = 2


Private Sub Worksheet_Change(ByVal Target As Range)
colonne = Target.Column
ligne = Target.Row
If (ligne = pls And colonne = pcs) Then Run (masquecell())
If (ligne = dls And colonne = dcs) Then Run (masquecell2())
End Sub

En espérant que ça puisse en aider d'autres.

Cordialement.

EL
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed