Remplacer "BeforeRightClick" par un ajout automatique

Bonjour

J'ai trouvé une macro sur un forum pour concevoir un calendrier qui est très bien faite, cependant l'ajout des données au calendrier se faire par clic droit et l'effacement par double clic. Or j'ai beaucoup de données à ajouter (environ 1000 lignes) et qui sont susceptibles de changer à chaque mise à jour.

Code de l'ajout par clic droit :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  If Not Application.Intersect(Target, Range("$E$2:$E$65000")) Is Nothing Then
  Cancel = True
    ActiveCell.Interior.Color = RGB(250, 250, 210) 
    Nb = 0 '
    dDate = ActiveCell
    mois = Month(ActiveCell)
    If Len(mois) = 1 Then mois = "0" & mois
    annee = Year(ActiveCell)
    feuille = annee & "-" & mois
      With Sheets(feuille)
        For lig = 6 To 16 Step 2
          For col = 3 To 9
            If Sheets(feuille).Cells(lig, col).Value = Day(dDate) Then
              With Worksheets("Base")
                If Sheets(feuille).Cells(lig, col).Offset(1, 0) <> "" Then 
                temp = Sheets(feuille).Cells(lig, col).Offset(1, 0).Value 
                Nb = 1
                End If
                Sheets(feuille).Cells(lig, col).Offset(1, 0) = ActiveCell.Offset(0, -4) & " : " & ActiveCell.Offset(0, -3) & " - " & ActiveCell.Offset(0, -2) & ActiveCell.Offset(0, -1)
                Formater Sheets(feuille).Cells(lig, col).Offset(1, 0), ActiveCell.Offset(0, -4), 0
         Formater Sheets(feuille).Cells(lig, col).Offset(1, 0), ActiveCell.Offset(0, -3), Len(ActiveCell.Offset(0, -4)) + 3
                Formater Sheets(feuille).Cells(lig, col).Offset(1, 0), ActiveCell.Offset(0, -2), Len(ActiveCell.Offset(0, -3)) + Len(ActiveCell.Offset(0, -4)) + 6
                  If Nb = 1 Then 
              Sheets(feuille).Cells(lig, col).Offset(1, 0).Value = Sheets(feuille).Cells(lig, col).Offset(1, 0).Value & Chr(10) & temp
                    Nb = 0
                  End If
              End With
              Exit For
            End If
          Next col
        Next lig
      End With
  End If
Sheets("Base").ACTIVATE
End Sub

Code de la suppression par double-clic :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Application.Intersect(Target, Range("E2:E65000")) Is Nothing Then 
      monText = ActiveCell.Offset(0, -4) & " : " & ActiveCell.Offset(0, -3) & " - " & ActiveCell.Offset(0, -2) & ActiveCell.Offset(0, -1)
    dDate = ActiveCell
        mois = Month(ActiveCell)
            If Len(mois) = 1 Then mois = "0" & mois 
    annee = Year(ActiveCell)
        feuille = annee & "-" & mois 
              With Sheets(feuille)
        For lig = 6 To 16 Step 2 
        For col = 3 To 9             
        If Sheets(feuille).Cells(lig, col).Value = Day(dDate) Then
              Sheets(feuille).Cells(lig, col).Offset(1, 0) = Replace(Sheets(feuille).Cells(lig, col).Offset(1, 0), monText, "")
              Sheets(feuille).Cells(lig, col).Offset(1, 0).Font.Color = RGB(0, 0, 0)
              Sheets(feuille).Cells(lig, col).Offset(1, 0).Font.Bold = False
              Exit For             
              End If
          Next col
        Next lig
      End With
    ActiveCell.Interior.Color = RGB(255, 255, 255) 
    End If
End Sub

Comment puis-je remplacer l'ajout et la suppression par clic par une mise à jour automatique selon si la cellule est vide ou non ?

J'ai fait plusieurs tentatives en vain, étant très très novice en VBA

Merci d'avance de votre aide !

Bonjour,

Je t'invite à aller faire un tour de ce côté pour voir les différentes possibilité d'exécution automatique d'une macro : https://www.excel-pratique.com/fr/vba/evenements_classeur.php

Sinon, tu peux aussi exécuter une macro à partir d'un bouton, mais il faudra adapter le code ("Target" qui représente la plage/cellule à l'origine de l’exécution automatique disparaît).

Bonjour Pedro22, merci de ta réponse !

J'ai essayé le SheetChange pour remplacer mais en vain (peut-être parce que je ne sais pas bien l'utiliser aussi).

Je ne comprends pas trop comment adapter le code pour faire fonctionner la macro ?

Sachant qu'en essayant, même en enlevant le Private, je ne la trouve pas pour l'activer...

J'ai aussi essayé d'en faire une boucle mais elle ne se déclenche pas

J'essaie mais je suis un peu perdue face à ces macros

Bonjour Pedro22, merci de ta réponse !

J'ai essayé le SheetChange pour remplacer mais en vain (peut-être parce que je ne sais pas bien l'utiliser aussi).

Je ne comprends pas trop comment adapter le code pour faire fonctionner la macro ?

Sachant qu'en essayant, même en enlevant le Private, je ne la trouve pas pour l'activer...

J'ai aussi essayé d'en faire une boucle mais elle ne se déclenche pas

J'essaie mais je suis un peu perdue face à ces macros

Plutôt que de te proposer un code que tu ne maîtriseras pas et sur lequel tu ne seras pas autonome, je te propose de prendre le temps de feuilleter les 2 sections de cours VBA du site. Fais quelques exercices simples et revient nous voir ensuite pour travailler ensemble sur ta problématique.

J'en ai pas mal feuilleté mais j'avoue avoir peu de temps pour rendre mon document, n'ayant jamais fait de VBA avant c'est compliqué d'en apprendre les bases si rapidement… Merci beaucoup d'avoir pris le temps de me répondre !

J'ai finalement réussi à faire un code fonctionnel, si jamais ça intéresse quelqu'un à l'avenir

Sub ActiveDbleClick()

Dim ws As Worksheet
Dim LastRow As Long, i As Long
LastRow = Range("E" & Rows.Count).End(xlUp).Row
Set ws = Feuil1
Range("E7").Select
i = 1
For i = 1 To LastRow
Call Worksheet_BeforeDoubleClick(Selection, False)
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value > Range("L3") Then
Exit For
End If
Next i

End Sub
Rechercher des sujets similaires à "remplacer beforerightclick ajout automatique"