Niks

XLDnaute Nouveau
Bonjour,

pour commencer je débute dans les vba et macro et je n'ai pas de notion de code.
J'ai fait ce calendrier avec l'aide d'un tuto sur Youtube, il me permet d'inscrire une date automatiquement dans une cellule quand je la choisi dans le calendrier.
Regarde la pièce jointe 1105916

J'aimerais l'améliorer en ayant la possibilité de choisir une deuxième cellule sans modifier la première.
la logique voudrait que la commande soit (si la cellule "b6" est déjà rempli alors tu utilise la cellule b7) mais le soucis c'est que partout ou je passe sur le net je ne trouve rien qui s'adapte à ma situation.

voici ma commande en VBA sur laquelle je voudrait rajouter cette option :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  
    If Not Intersect(Target, Range("K4:Q9")) Is Nothing Then
        Range("D2").Value = Target.Value
      
    End If

End Sub

j'espère avoir été assez clair dans ma demande est que j'ai bien expliquer, je vous remercie d'avance ;)
 
Solution
et moi j'aurai vu que j'avais une parenthèse de trop... lol

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("K4:Q9")) Is Nothing Then
    If Len(Range("D2").Value) = 0 Then
        Range("D2").Value = Target.Value
    Else
        Range("D3").Value = Target.Value
    End If
  End If
End Sub

A+ François

fanfan38

XLDnaute Barbatruc
Bonjour
Un fichier est TOUJOURS le bienvenu
If Not Intersect(Target, Range("K4:Q9")) Is Nothing Then
if len(range("D2").value))=0 then
Range("D2").Value = Target.Value
else
Range("D3").Value = Target.Value
endif
End If
J'espère que cela répond à ton problème
A+ François
 

Niks

XLDnaute Nouveau
Bonjour est merci pour cette réponse
je vous transmet du coup le fichier (pas du tout penser la première fois) car du coup j'ais un soucis avec la ligne:
if len(range("D2").value))=0 then

Je vous remercie ☺️
 

Pièces jointes

  • datepicker.xlsm
    25.4 KB · Affichages: 27

fanfan38

XLDnaute Barbatruc
et moi j'aurai vu que j'avais une parenthèse de trop... lol

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("K4:Q9")) Is Nothing Then
    If Len(Range("D2").Value) = 0 Then
        Range("D2").Value = Target.Value
    Else
        Range("D3").Value = Target.Value
    End If
  End If
End Sub

A+ François
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
ouais sauf que si tu veux changer en cas d'erreur ou autres ben tu est obligé d'aller vider la cellule voulue en "D"
donc si tu sélectionnais une des deux cells en "D"(vide ou pas vide) avant d'utiliser le calendrier
afin de pouvoir jouir du calendrier tout le temps sur tes deux cells

ça serait pas mieux ?
VB:
Dim oldcell As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 4 Then Set oldcell = Target: Exit Sub
    If Not Intersect(Target, Range("K4:Q9")) Is Nothing And Not oldcell Is Nothing Then oldcell = Target.Value
End Sub
;)
 

patricktoulon

XLDnaute Barbatruc
je dirais même plus précis
vide ou pas vide tu sélectionne celle que tu veux en D2:D3 et tu choisi dans ton calendrier
si par erreur tu choisissais les deux cells en même temps c'est la D2 qui prime
VB:
Dim oldcell As Range 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("D2:D3")) Is Nothing Then Set oldcell = Target(1): Exit Sub
    If Not Intersect(Target, Range("K4:Q9")) Is Nothing And Not oldcell Is Nothing Then oldcell = Target.Value
End Sub
demo7.gif
 

Discussions similaires

Réponses
2
Affichages
916

Statistiques des forums

Discussions
311 705
Messages
2 081 733
Membres
101 807
dernier inscrit
foued