IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Calendrier sur 2 cellules [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Par défaut Calendrier sur 2 cellules
    Bonjour,

    Tout d'abord, j'espère poster au bonne endroit, dans le cas contraire veuillez m'en escuser. Je suis en train de realiser un petit projet pour un stage, je suis en train de découvrire excel 2007 et son VBA en même temps.

    J'ai besoin d'un calendrier, pour entrer une date dans une cellule, j'ai donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Explicit
     
    Private Sub Calendar1_Click()
        Range("C5").Value = Calendar1.Value
    End Sub
    '
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Dim Intersection As Range, Plage As Range
     
        Set Plage = Range("C5")
        Set Intersection = Application.Intersect(Target, Plage)
        If Not (Intersection Is Nothing) Then
            Calendar1.Visible = True
        End If
     
    End Sub
    '
    Donc quand je clique sur une date de mon calendrier, j'ai ma date en C5. Sauf que j'aimerais aller plus loin. J'ai 2 dates, à saisir, et je voudrais le faire avc un seul calendrier.

    Par exemple : je clique sur C5, puis sur mon calendrier et j'ai ma date en C5. Je clique sur C6, je clique sur mon calendrier et j'ai ma date en C6.

    Je pense qu'il faut "simplement" remplacer le "C5" de mon code par une variable. Et définir cette variable par l'identité (C5, C6 ou autre) en cliquant sur une cellule. Mais je sais pas faire :p

    Donc ma question serait : Comment en cliquant sur une cellule, je peux donner son nom dans VBA ? (désolé pour les termes, en 3 jours d'excel à peine, j'ai pas tout appris ^^)

    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut !

    Il faut bien commencer à un moment

    Tu testes pour moi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
     
    Private Sub Calendar1_Click()
        For i = 5 to 10 'Tu as ton calendrier dans les Cells C5 à C10
            Range("C" & i).Value = Calendar1.Value 'Ton Calendar1 va être utilisé dans les Cells C5 à C10
        Next
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Dim Intersection As Range, Plage As Range
     
        For j = 5 to 10
            Set Plage = Range("C" & j)
            Set Intersection = Application.Intersect(Target, Plage)
            If Not (Intersection Is Nothing) Then
                Calendar1.Visible = True
            End If
        Next
     
    End Sub
    Voilà, ici ça devrait marcher pour 5 cellules. Si tu n'en veux que 2, par contre, autant ne pas passer par une boucle. Mais bon, la boucle marche aussi pour 2 valeurs

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Par défaut
    Merci bien

    Bon déjà, je comprend plus ou moins le code, c'est déjà ça.

    J'ai gardé ta boucle, mais j'ai réduis pour 2 cellules.

    Coté Test (avec et sans ma modif of course !), j'ai une erreur :

    Variable non défini, il me pointe le i. Je suppose qu'il va le faire pour j aussi.

    Après recherche, je fois qu'on déclare avec "Dim UnTexte as String "

    Je regarde pour mon cas, j'applique, je test, et je reviens :p

    EDIT : Voila mon code, avec mes petites modifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
    Private Sub Calendar1_Click()
        Dim i As Integer
        For i = 5 To 6
            Range("C" & i).Value = Calendar1.Value
        Next
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Dim Intersection As Range, Plage As Range
        Dim j As Integer
        For j = 5 To 6
            Set Plage = Range("C" & j)
            Set Intersection = Application.Intersect(Target, Plage)
            If Not (Intersection Is Nothing) Then
                Calendar1.Visible = True
            End If
        Next
     
    End Sub
    Donc cela hélas, ne marche pas, il me change la valeur des 2 cellules, comme si il ne prennait pas en compte que je clique sur C5 ou C6.

    Au cas ou c'était pas clair, il me faut 2 dates différentes dans mes 2 cellules

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Oups, au temps pour moi !

    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Calendar1_Click()
        Dim i As Integer
        For i = 5 To 6
            Range("C" & i).Value = Calendar1.Value
        Next
    End Sub
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Calendar1_Click()
            Selection.Value = Calendar1.Value
    End Sub
    Ca devrait marcher, je pense...

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Par défaut
    You're a genius

    Merci beaucoup, et bonne journée.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    De rien et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] calendrier sur cellule
    Par crashfire dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/01/2010, 19h15
  2. Changement de style lors du focus sur une cellule
    Par zyg dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 23/12/2005, 10h29
  3. Besoin d'une petite aide:onclick sur une cellule
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2005, 08h47
  4. Focus sur une cellule spécifique d'un DBGrid
    Par danbern dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2004, 19h04
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo