Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres incorporer une macro dans une autre macro

un internaute

XLDnaute Impliqué
Bonjour le forum
Dans la macro tout en bas qui est en commentaires peut-on m'aider à incorporer dans celle au dessus afin de pouvoir faire ceci:
Si je clique sur une cellule de la colonne B6 à B36 ça m'affiche une date colonne A et si c'est pas la bonne date je clique sur une autre qui se rapproche de celle que je veux, la date précédente doit s'effacer ainsi de suite. Quand c'est la bonne date je tape un montant colonne B ça affiche les couleurs car j'ai des MFC
Si c'est pas possible ou mal expliqué je peux si quelqu’un le souhaite envoyer un fichier en MP
Merci à vous pour vos éventuels retours

VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Obj As Shape, Ligne As Long
 
  ' Change automatiquement le texte du bouton

  Ligne = Selection.Row
  If Range("B" & Ligne) = "" Or Ligne > Range("A" & Rows.Count).End(xlUp).Row Or Ligne < 5 Then
    Ligne = Range("A" & Rows.Count).End(xlUp).Row
  End If
 
    If UCase(Sh.Name) <> "MENU" And Target.Count = 1 And Target.Column = 2 And Target.Row > 5 Then
      Application.ScreenUpdating = False
'      ActiveSheet.Unprotect
      
      For Each Obj In ActiveSheet.Shapes
        If InStr(1, Obj.TextFrame.Characters.Text, "Centrer Texte", vbTextCompare) > 0 Then Exit For
      Next Obj
      
      If Not Obj Is Nothing Then
      ' Calcul de la dernière ligne.Celle-ci sera automatiquement centrée sur les colonnes B & C en cliquant sur le Bouton Centrer Texte Sur Plusieurs Colonnes
        
        With Obj.TextFrame
          If Range("B" & Ligne).HorizontalAlignment = xlCenterAcrossSelection Then
            .Characters.Text = "Annuler Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
            .Characters(Start:=23, Length:=22).Font.ColorIndex = 5
          Else
            .Characters.Text = "Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
            .Characters(Start:=15, Length:=22).Font.ColorIndex = 5
          
          End If
        End With
      End If
'      ActiveSheet.Protect
    End If
End Sub

'Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'Dim LaDate As Date, J As Long
'  If Target.Address <> Selection.Address Then Exit Sub
'    If Target.Column = 2 Then
'        Application.ScreenUpdating = False
'        For J = 6 To 36
'            If Cells(J, "B") = "" Then Cells(J, "A").ClearContents
'        Next J
'        ' 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
'            ' Si la colonne B et la colonne C est vide on efface la date
'            Range("A" & Target.Row) = Application.Proper(Format(LaDate, "dddd dd mmmm yyyy"))
'        End If
'    End If
'End Sub
 

un internaute

XLDnaute Impliqué
J'y suis presque
Le problème c'est quand je clique sur un cellule quelconque colonne B de B6 à B36
la date s'affiche bien colonne A. Exemple cellule A7 Vendredi 02 Août 2024, je tape un montant cellule B7 je valide ça m'affiche la date du lendemain Samedi 03 Août 2024
Pour l'instant je ne voit pas d'où ça vient
Merci pour vos éventuels retours


VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Obj As Shape, Ligne As Long
Dim LaDate As Date, J As Long
  ' Change automatiquement le texte du bouton

  If Target.Address <> Selection.Address Then Exit Sub
    If Target.Column = 2 Then
        Application.ScreenUpdating = False
'        For J = 6 To 36
'            If Cells(J, "B") = "" Then Cells(J, "A").ClearContents
'        Next J
        ' 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
            ' Si la colonne B et la colonne C est vide on efface la date
            Range("A" & Target.Row) = Application.Proper(Format(LaDate, "dddd dd mmmm yyyy"))
        End If
    End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
N'auriez vous pas tout simplement le déplacement automatique de la sélection après validation (option que j'ai personnellement désactivé depuis très longtemps: quand je valide une cellule par Entrée, moi je reste dessus !) ?
 

Discussions similaires

Réponses
1
Affichages
282
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…