Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nonno 94

XLDnaute Occasionnel
Bonjour le Forum,

juste une "petite question en passant"; question dont la réponse me "simplifierait bien la vie" !

Pouvez-vous me dire pour quelle étrange raison, depuis peu, lorsque je "fais Entrée" dans une feuille d'un seul de mes classeurs, je me "retrouve à l'insu de mon plein gré", dans une autre feuille (toujours la même) de ce même classeur et m'indiquer la façon d'y remédier ?

Remerciements pour vos réponses.

Cordialement.
Nonno 94.


Remerciements
 
Re : Taper "Entrée" !

Bonjour Nono, bonjour le forum,

Ce classeur contient-il des maros ? Il est possible qu'une macro événementielle Change soit responsable de ça. Mais sans voir le fichier, difficile de t'en dire plus...
 
Re : Taper "Entrée" !

Bonsoir Robert et Tototiti,

je vous remercie pour vos réponses et .....vos questions pertinentes.
Effectivement, le classeur contient des macros dont une évènementielle "Change" dont je vous communique le code ci-dessous :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)

Dim feuille As Worksheet
Application.ScreenUpdating = False
On Error GoTo GestErr
For Each feuille In ThisWorkbook.Worksheets
With feuille
If feuille.Name <> "LV" And feuille.Name <> "Récap. (Edition)" Then
If .Range("Q1") <> "" And .Range("Q1") <> .Name Then .Name = .Range("Q1").Value
End If
End With
Next feuille
Application.ScreenUpdating = True
Exit Sub
GestErr:
MsgBox "Vous ne pouvez pas nommer l'onglet " & feuille.Name & " : " & feuille.Range("Q1") & " !", _
vbCritical + vbOKOnly

End Sub

Le classeur contient également une Macro "Calculate" dont le code est le suivant :

Private Sub Worksheet_Calculate()
Sheets("Récap").Select
If Range("Q4").Value > 0 Then
Sheets("LV").Select
Sheets("LV").Copy Before:=Sheets("Récap")
Sheets("Récap").Select
End If
End Sub

Cette macro est insérée dans la feuille "Récap" vers laquelle je suis systématiquement renvoyé lorsque je tape "Entrée" dans une autre feuille.
Peut-être contribue-t-elle également à ce dysfonctionnement ?

Veuillez excuser cette "présentation" !.

J'espère que cela vous permettra de m'indiquer la correction à effectuer.
Dans le cas contraire et si vous le désirez, je pourrai vous faire parvenir le classeur "récalcitrant".

Je vous souhaite une bonne soirée.
Nonno 94.
 
Dernière édition:
Re : Taper "Entrée" !

Bonsoir le fil, fonsoir le forum,

Je t'ai commenté le code pour que tu comprennes mieux :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range) 'au changement sur n'importe quel onglet du classeur
Dim feuille As Worksheet 'déclare la variable feuille
Application.ScreenUpdating = False 'masque les changements à l'écran
On Error GoTo GestErr 'si une erreur se produit, va à l'étiquette "GestErr"
For Each feuille In ThisWorkbook.Worksheets 'boucle sur tous les onglets de ce classeur
    With feuille 'prned en compte l'onglet de la boucle
        'condition 1 : si le nom de l'onglet est différent de "LV" et si le nom de l'onglet est différent de "Récap. (Edition)"
        If feuille.Name <> "LV" And feuille.Name <> "Récap. (Edition)" Then
            'condition 2 : si la cellule Q1 n'est pas vide et si la valeur de la cellule Q1 est diférente du nom de l'onglet,
            'alors l'onglet est renommé avec la valeur de la cellule Q1
            If .Range("Q1") <> "" And .Range("Q1") <> .Name Then .Name = .Range("Q1").Value
        End If 'fin de la condition 1
    End With 'fin de la prise en compte de l'onglet de la boucle
Next feuille 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les changements à l'écran
Exit Sub 'sort de la procédure
GestErr: 'étiquette
'message
MsgBox "Vous ne pouvez pas nommer l'onglet " & feuille.Name & " : " & feuille.Range("Q1") & " !", _
vbCritical + vbOKOnly
End Sub
pas de problème ici...

Code:
Private Sub Worksheet_Calculate()
Sheets("Récap").Select 'sélectionne l'onglet récap
If Range("Q4").Value > 0 Then 'si la valeur de la celleule Q4 est positive
    Sheets("LV").Select 'sélectionne l'onglet "LV"
    Sheets("LV").Copy Before:=Sheets("Récap") 'copie l'onglet "LV" et place la copie après l'onglet "Récap"
    Sheets("Récap").Select 'sélectionne l'onglet "Récap
End If 'fin de la condition
End Sub
Je pense que le problème est ici. Tu dis que ce code est dans l'onglet Récap. Celui ci doit contenir des formules et quand tu modifies une cellule dans un autre onglet, l'événement Calculate doit être déclenché dans Récap à cause des formules... Comme la première ligne de ce code est : Sheets("Récap").Select tu te retrouves forcément avec cet onglet actif.
Supprime cette ligne (ou met-la en commentaire) mais, n'ayant pas ton fichier en main, je ne sais pas si cette action va poser des problèmes ailleurs...
 
Re : Taper "Entrée" !

Bonjour Robert,
ce matin, de retour de ma "galère" quotidienne, j'ai eu le plaisir de lire ta réponse dont je te remercie.
Malheureusement, je ne peux retenir ta suggestion car alors, "mon système" s'emballe et ne s'arrête plus.

Aussi, et si tu le veux bien, je te fais parvenir mes 2 classeurs dont les liens suivent :

Cijoint.fr - Service gratuit de dépôt de fichiers
Cijoint.fr - Service gratuit de dépôt de fichiers

Dans la feuille "Récap" du classeur "Prestations", j'ai ajouté des explications qui, je l'espère, te permettront de comprendre mon "problème".
Je me suis également permis, en espérant ne pas trop "abuser", d'ajouter 2 questions !
A toi de "juger".

Je te renouvelle mes remerciements et te souhaite une très bonne journée.
Cordialement.

Nonno 94.
 
Re : Taper "Entrée" !

Bonjour le fil, bonjour le forum,

Hou la Nono, c'est énorme ! Franchement je me sens pas le courage de mettre le nez dans tout ce code. Le conseil que je peux te donner c'est de mettre des point d'arrêt au début des macro événementielles et de faire défiler pas à pas (avec la touche [F8]). Peux être tu trouveras le problème. Bon courage...
 
Re : Taper "Entrée" !

Re,

si un expert dit que "c'est énorme", que peut faire un "mauvais nouveau" si ce n'est continuer à chercher et .....espérer !
Comment et où mettre les "points d'arrêt" ?
Peux-tu répondre aux 2 questions .....subsidiaires ?

Je te renouvelle mes remerciements.
"EXCEL"lente journée.

Cordialement.
Nonno 94.
 
Dernière édition:
Re : Taper "Entrée" !

Bonjour le fil, bonjour le forum,

Nono j'ai dit "c'est énorme" car se plonger dans le code des autres n'est pas simple. On a chacun sa manière de coder. Mais ce ne doit pas être si compliqué que ça. Pour mettre un point d'arrêt il suffit d'aller dans VBE (Visual Basic Editor avec [Alt]+[F11]) de cliquer n'importe où sur la premiere ligne du code d'une macro événementielle (Calculate par exemple) et d'appuyer sur la touche [F9] (idem pour l'enlever). Un gros point marron apparaît. Quand la macro s'éxécute elle est arrêté au point d'arrêt et tu peux faire défiler ligne après ligne avec la touche [F8]. Il ne te reste plus qu'à voir ce qui se passe.

Pour les questions subsidiaires, c'est pareil Nono. Autant il est facile d'aider quelqu'un sur un exemple simple mais là, moi je n'ai pas le courage de me plonger dans ton projet complet...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
856
Réponses
25
Affichages
2 K
Réponses
11
Affichages
729
Retour