Microsoft 365 Retour à Feuil1

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir à toutes et à tous,

Je n'arrive pas à coder cette action :

Je suis sur la Feuil1 et la hauteur de la ligne active est 150
Quand clic sur l'onglet Feuil2, je voudrais que si la ligne active de la Feuille1 est 150, que la Feuil1 soit sélectionnée.

J'ai tenté dans le code de la Feuil2 :
VB:
Private Sub Worksheet_Activate()
If Worksheets("Feuil1").Cells(ActiveCell).RowHeight = 15 Then
MsgBox ("Vous n'avez pas sélectionné de ligne feuille Suivis Appels")
Sheets("Feuil1").Select
Exit Sub
Else
[a1].Select
End If
End Sub
Et bien d'autres ...
Mais ça ne fonctionne pas :mad:
Pourriez-vous m'aider ?
Avec mes remerciements,
lionel,
 
Dernière édition:
Solution
Tu devais être capable de compléter mon code :
VB:
Private Sub Worksheet_Deactivate()
Dim w As Worksheet
Set w = ActiveSheet 'mémorise
If w.Name <> "Feuil2" Then Exit Sub
Application.ScreenUpdating = False
Me.Activate
If ActiveCell.RowHeight = 15 Then
    Application.ScreenUpdating = True
    MsgBox "Vous n'avez pas sélectionné de ligne feuille Suivis Appels"
Else
    w.Activate
End If
End Sub

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Usine à gaz , le Forum,

c'est cornelien ton truc lol

Le plus approchant mais qui n'est pas fiable si aucun changement de cellule fait en feuil1 ....

VB:
Option Explicit
'Private Module de Feuil11

Public MyOldTarget As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Target Is Nothing Then
        Set MyOldTarget = Target
    End If
End Sub

Private Sub Worksheet_Deactivate()
 If Not MyOldTarget Is Nothing Then
    If Rows(MyOldTarget.Row).RowHeight = 15 Then
        MsgBox ("Vous n'avez pas sélectionné de ligne feuille Suivis Appels")
        Me.Select
        Exit Sub
    Else
        MsgBox "ok"
    End If
 Else
    MsgBox "pas possible de contrôler!"
 End If
End Sub


Bonne nuit
@+Thierry
 

job75

XLDnaute Barbatruc
Bonjour Lionel, _Thierry, le forum,
c'est cornelien ton truc lol
C'est surtout peu clair, on parle de hauteur 150 et dans le code c'est 15 qui est utilisé...

Alors placer dans le code de Feuil1 :
VB:
Private Sub Worksheet_Deactivate()
Dim w As Worksheet
Set w = ActiveSheet 'mémorise
Application.ScreenUpdating = False
Me.Activate
If ActiveCell.RowHeight = 150 Then ' ou If ActiveCell.RowHeight <> 150 Then ???
    Application.ScreenUpdating = True
    MsgBox "Vous n'avez pas sélectionné de ligne feuille Suivis Appels"
Else
    w.Activate
End If
End Sub
Bonne journée.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Thierry,

"si aucun changement de cellule fait en feuil1"
Effectivement, ton code fonctionne si changement dans la feuil1.
J'ai oublié de le préciser (heure tardive et fatigue aidant) :
Dans la Feuil1, toutes les lignes sont à hauteur 15
Quand on sélectionne une cellule d'une ligne pour travailler, la ligne sélectionnée passe à hauteur 150 pour afficher en entier tout ce qui est dans les cellules de la ligne.
Et, le but est de ne pas pouvoir sélectionner la Feuill2 si aucune ligne sélectionnée en Feuil1.

@+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Gérard,

super ton code ... trop super lol :) Merci

J'ai oublié de le préciser (heure tardive et fatigue aidant) :
Dans la Feuil1, toutes les lignes sont à hauteur 15
Quand on sélectionne une cellule d'une ligne pour travailler, la ligne sélectionnée passe à hauteur 150 pour afficher en entier tout ce qui est dans les cellules de la ligne.
Et, le but est de ne pas pouvoir sélectionner la Feuill2 si aucune ligne sélectionnée en Feuil1.

Juste, faudrait que le code empêche uniquement la sélection de la Feuil2 et n'empêche pas la sélection des autres feuilles.

Merci Gérard :)
lionel,
 
Dernière édition:

job75

XLDnaute Barbatruc
Tu devais être capable de compléter mon code :
VB:
Private Sub Worksheet_Deactivate()
Dim w As Worksheet
Set w = ActiveSheet 'mémorise
If w.Name <> "Feuil2" Then Exit Sub
Application.ScreenUpdating = False
Me.Activate
If ActiveCell.RowHeight = 15 Then
    Application.ScreenUpdating = True
    MsgBox "Vous n'avez pas sélectionné de ligne feuille Suivis Appels"
Else
    w.Activate
End If
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour,
Je n'ai pas eu de souci pour inclure le code dans mon classeur (c'est un dossier de formation - pas l'usine à gaz lol) ... mais ...

Je n'avais pas penser à signaler que dans le fichier test, dans la Feuil2 (ArguVendeurs dans mon fichier) , il y a un code (un peu long) qui s'exécute :
Quand en "Feuil1"
1 - Si ligne sélectionnée =15 > le code de la Feuil2 (ArguVendeurs dans mon fichier) s'exécute et ça beug !
2 - Si ligne sélectionnée <>15 > la Feuil2 (ArguVendeurs dans mon fichier) est activée - je ne sais pas si le code de la Feuil2 (ArguVendeurs dans mon fichier) s'exécute - mais ça ne beug pas.

Est-il possible de bloquer l'exécution du code de la Feuil2 (ArguVendeurs dans mon fichier) à l'exécution du code de la Feuil1 ?
Merci3.gif


De mon côté, je continue à chercher :)
lionel
 
Dernière édition:

job75

XLDnaute Barbatruc
Bof essaie avec les Application.EnableEvents :
VB:
Private Sub Worksheet_Deactivate()
Dim w As Worksheet
Set w = ActiveSheet 'mémorise
If w.Name <> "Feuil2" Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Activate
If ActiveCell.RowHeight = 15 Then
    Application.ScreenUpdating = True
    MsgBox "Vous n'avez pas sélectionné de ligne feuille Suivis Appels"
Else
    w.Activate
End If
Application.EnableEvents = True
End Sub
Si ça ne va pas il faudrait donner le code de Feuil2.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci gérard, mais ça beug tjrs et j'ai compris pourquoi !
Voici le code de la Feuil2 (ArguVendeurs dans mon fichier) :
VB:
Private Sub Worksheet_Activate()
    'If Worksheets("SuivisAppels").Range(ActiveCell).RowHeight = 0 Then Exit Sub
    'If Worksheets("SuivisAppels") Then Exit Sub
    'If Worksheets("SuivisAppels") = True Then Exit Sub
    

    If [a1] = 1 Then
    ActiveWindow.DisplayHorizontalScrollBar = False
    ActiveWindow.DisplayVerticalScrollBar = False
    Application.EnableEvents = False
    ActiveSheet.Unprotect Password:="Krameri"
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Range(Cells(1, 24), Cells(1, 2)).Select 'juste 5 à changer selon le nombre de colonnes à afficher
    ActiveWindow.Zoom = True

    Range("A1").Select
    ActiveWindow.DisplayGridlines = False
    Application.DisplayFormulaBar = False

    Range("L13:R50").Select
    Selection.ClearContents
    [l13] = "Cliquez sur un mot clé pour afficher l'argus"
    [l15].Font.Name = "Arial"
    [l15].Font.Size = 14
'     [b49] = d:
    
    [a1] = 2
    Range("a1").Select
    ActiveWindow.ScrollRow = Selection.Row
    Else
    ActiveWindow.DisplayHorizontalScrollBar = False
    ActiveWindow.DisplayVerticalScrollBar = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    ActiveWindow.DisplayHeadings = False
    ActiveSheet.Unprotect Password:="Krameri"
    Range("L13:R50").Select
    Selection.ClearContents
    [l13] = "Cliquez sur un mot clé pour afficher l'argus"
'     [b49] = d:
    Range("a1").Select
    ActiveWindow.ScrollRow = Selection.Row
    End If
    ActiveSheet.Protect Password:="Krameri", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    With Sheets("SuivisAppels")
    .Activate
    [b51] = .Cells(ActiveCell.Row, 18)
End With
Me.Activate
ActiveSheet.Protect Password:="Krameri", DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

ça beug là :
ActiveSheet.Unprotect Password:="Krameri"
Range("L13:R50").Select


En allant voir, je vois que la Feuil2 n'est pas déprotégée et pourtant la ligne de code juste au-dessus est "ActiveSheet.Unprotect Password:="Krameri""

J'essaie de comprendre lol ???
lionel
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 980
Membres
103 079
dernier inscrit
sle