Autres [ RÉSOLU] sélection de cellule dans macro après validation

un internaute

XLDnaute Impliqué
Bonjour le forum
Dans le fichier joint lorsque je clique sur une cellule colonne B ça affiche la date colonne A et je tape des données colonne B ça fonctionne mais ça affiche sur 2 lignes et il faut revenir sur la 1ére ligne pour la supprimer
2ème problème lorsque je fait la même chose le dernier jour du mois lorsque je tape je tape colonne B ça fonctionne mais lorsque je tape colonne C ça passe sur le mois suivant et il faut cliquer sur afficher tous les mois pour retrouver par exemple le mois de juillet (si je tape le 31 juillet)
Merci à vous pour vos éventuels retours
Cordialement
 

Pièces jointes

  • toto.xls
    234 KB · Affichages: 16

fanch55

XLDnaute Barbatruc
Dans le fichier joint lorsque je clique sur une cellule colonne B ça affiche la date colonne A et je tape des données colonne B ça fonctionne mais ça affiche sur 2 lignes et il faut revenir sur la 1ére ligne pour la supprimer
Bonjour,
Si l'utilisateur fait "entrée" , cela fait naturellement passer la sélection sur la ligne suivante .
Code corrigé dans le classeur pour revenir à la ligne modifiée .
2ème problème lorsque je fait la même chose le dernier jour du mois lorsque je tape je tape colonne B ça fonctionne mais lorsque je tape colonne C ça passe sur le mois suivant et il faut cliquer sur afficher tous les mois pour retrouver par exemple le mois de juillet (si je tape le 31 juillet)
C'est normalement ce qui est prévu dans le code ....
Bloc de code correspondant mis en commentaire ...
 

Pièces jointes

  • toto.xls
    165.5 KB · Affichages: 8

soan

XLDnaute Barbatruc
Inactif
Bonjour un internaute, fanch55,

Dans le fichier joint lorsque je clique sur une cellule colonne B ça affiche la date colonne A et je tape des données colonne B ça fonctionne mais ça affiche sur 2 lignes et il faut revenir sur la 1ère ligne pour la supprimer.

Si l'utilisateur fait "entrée", cela fait naturellement passer la sélection sur la ligne suivante.

c'est tout à fait exact ; c'est du moins le comportement d'Excel par défaut. 😜

Code corrigé dans le classeur pour revenir à la ligne modifiée.

je pense que c'était inutile, car il suffit de changer cette option d'Excel :​

Image.jpg


eh oui, si la case à cocher indiquée par la flèche verte est décochée, ça ne va plus à la ligne en dessous si on appuie sur la touche Entrée ! noter aussi que dans ce cas, la sous-option Sens "Bas" est grisée, donc ignorée.

sur mon PC, c'est bien comme ça ; quand je fais Entrée, ça reste sur la même cellule de la même ligne ; et si j'ai besoin d'aller sur la cellule de la ligne en dessous, au lieu d'appuyer sur la touche Entrée, j'appuie tout simplement sur la touche flèche bas, notée par ou .​

remarque : ce que je viens de décrire est valable sur toutes les versions d'Excel.

soan
 
Dernière édition:

un internaute

XLDnaute Impliqué
Bonjour soan
Je vais regarder tout ça car pour nu nonagénaire je me lève de bonne heure!!!
Maintenant ce fichier n'étant pas pour moi mais ma fille elle me demande si c'est possible de mettre en Majuscule la 1ère lettre en Majuscule voir fichier joint
Mais c'est la MFC qui ne suit pas
Comprend pas là
Merci à vous pour vos éventuels retours
Cordialement
 

Pièces jointes

  • toto.xls
    223.5 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Maintenant ce fichier n'étant pas pour moi mais ma fille elle me demande si c'est possible de mettre en Majuscule la 1ère lettre en Majuscule voir fichier joint
Si tu parles de la date, je te propose de remplacer la macro actuelle dans ThisWorkbook par celle-ci :

VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim LaDate As Date, J As Long, ZeDate As String
    If Target <> Selection Then Exit Sub
    If Target.Column = 2 Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        For J = 6 To 36
            ' Si la colonne B est vide on efface la date
            If Cells(J, "B") = "" Then Cells(J, "A").ClearContents
        Next J
        Application.EnableEvents = True
        ' Reconstruit la date de fonction du nom de la feuille et du numéro de ligne sélectionnée
        LaDate = DateSerial(Split(Sh.Name, " ")(1), Month(DateValue(Sh.Name)), Target.Row - 5)
        If UCase(MonthName(Month(LaDate))) = UCase(Split(Sh.Name, " ")(0)) Then
            ZeDate = Format(LaDate, "dddd dd mmmm yyyy")
            ZeDate = UCase(Left(ZeDate, 1)) & Right(ZeDate, Len(ZeDate) - 1)
            Application.EnableEvents = False
            Range("A" & Target.Row) = ZeDate
            Application.EnableEvents = True
        End If
    End If
End Sub



C'est d'un compliqué ton truc juste pour saisir un kilométrage et un volume de carburant ! :eek:
C'est vraiment très joli et du plus bel effet je trouve, de "masquer les dates". Mais est-ce vraiment utile ?
Et y a besoin d'une feuille par mois ? Et besoin de masquer les feuilles mensuelles ?

Un truc sans VBA, avec juste une seule feuille avec saisie de la date, du kilométrage et du volume ne suffirait pas ??? 🤔
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour un internaute, le fil,

ceci est une réponse à ton post #5.

c'est possible de mettre en Majuscule la 1ère lettre en Majuscule voir fichier joint
Mais c'est la MFC qui ne suit pas

j'étais intervenu sur ce fil seulement pour te montrer une des options avancées d'Excel ; je ne pensais pas du tout que tu allais me demander de regarder ton fichier ! je l'ai quand même fait ; voici quelques infos :

* il y a une seule feuille visible : "Juillet 2022" ; toutes les autres feuilles sont cachées.

* sur la seule feuille visible : les jours et les mois ont déjà la 1ère lettre en majuscule :

Image 1.jpg


en A6 : le texte affiché est "Vendredi 01 Juillet 2022" ; le format utilisé est celui-ci : jjjj jj mmmm aaaa (bizarrement, y'a un espace en trop à la fin).

* c'est sur toutes tes autres feuilles mois que les jours et les mois n'ont pas d'initiale en majuscule ; exemple pour ta feuille "Août 2022" :

Image 2.jpg


en A6 : le texte affiché est "lundi 01 août 2022" ; le format utilisé est celui-ci : jjjj jj mmmm aaaa (là aussi, y'a un espace en trop à la fin).

* sur la feuille "MENU", en B2:B27 : les jours et les mois n'ont pas d'initiale en majuscule ; exemple :

Image 3.jpg


en B2 : le texte affiché est : "samedi 01 janvier 2022" ; la formule est : =DATE(An;1;1) ; le format utilisé est celui-ci : jjjj jj mmmm aaaa (ah, ici, y'a pas d'espace en trop à la fin ! 😜)

* dans un classeur vierge, je mets en A1 ce texte : "vendredi 01 juillet 2022" ; il n'y a pas de majuscule pour le jour ni pour le mois ; le format de départ est le format "Standard" puis je mets ton format de nombre personnalisé : jjjj jj mmmm aaaa ou jjjj jj mmmm aaaa (avec ou sans espace final) ; pour les 2 formats : résultat identique : même après avoir fait en A1 F2 puis Entrée, le texte reste le même : donc c'est bien la preuve que pour ta feuille "Juillet 2022", ça n'est pas ton format de nombre personnalisé qui met des initiales majuscules ! alors c'est quoi ?

* la réponse semble être dans le module ThisWorkbook, sub Workbook_SheetChange(), même si tu as dans un commentaire cette instruction : Application.Proper(Format()) car .Proper() est l'équivalent VBA de la fonction Excel NOMPROPRE() ; comme le code VBA de cette sub n'est pas très évident et que ton classeur ressemble à une usine à gaz, je préfère ne pas aller plus loin.

* en plus, tu n'as même pas indiqué tu aurais aimé qu'on intervienne ! sur une seule de tes feuilles mois ? quelques unes ? toutes ? probablement toutes sauf pour "Juillet 2022", puisque c'est déjà ok sur cette feuille ; peut-être aussi sur la feuille "MENU" ?

pour la suite, ce sera sans moi : je laisse la place à un autre intervenant ! bonne chance ! 🍀
soan
 

TooFatBoy

XLDnaute Barbatruc
c'est bien la preuve que pour ta feuille "Juillet 2022", ça n'est pas ton format de nombre personnalisé qui met des initiales majuscules ! alors c'est quoi ?

* la réponse semble être dans le module ThisWorkbook, sub Workbook_SheetChange(), même si tu as dans un commentaire cette instruction : Application.Proper(Format())
De mémoire, je dirais que c'est en fait dans SelectionChange comme je l'indiquais en #6.

Mais c'est vrai que c'est la seule macro que j'ai regardée, donc peut-être que, vu l'usine à gaz que c'est, d'autres macros viennent écraser ce qu'elle a écrit.
 

Discussions similaires

Réponses
12
Affichages
526
Réponses
11
Affichages
510

Statistiques des forums

Discussions
312 207
Messages
2 086 248
Membres
103 164
dernier inscrit
axelheili2