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

Ecriture d'une macro.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

speedtriple

XLDnaute Junior
Problème d'écriture d'une macro.

Bonjour,

je suis bloqué sur mon code VBA. Je ne suis pas un expert, et je bloque.
A partir d'une selection, je voudrais en tirer une date ou une fourchette de date.
Pourriez-vous me donner un petit coup de pouce ?
Merci

Les explications sont sur la feuil1

Speedtriple
 
Dernière édition:
Re : Ecriture d'une macro.

Bonsoir SpeedTriple, bonsoir le forum,

J'ai un peu modifié ton code car il y avait un boucle au début qui ne servait à rien. À tester :
Code:
Sub Nom_CP()
Dim nomcp As String 'déclare la variable nomcp
Dim naturecp As String 'déclare la variable naturecp
Dim matricule As String 'déclare la variable matriculecp
Dim NombreCP As Integer 'déclare la variable Nombrep
Dim ddate As String 'déclare la variable ddate (Début de la Date)
Dim ddate2 As String 'déclare la variable ddate (Début de la Date2)
Dim fdate As String 'déclare la variable fdate (Fin de la Date)
Dim fd As String 'déclare la variable fd (Fouchette de Date)
 
'sécurité : si la sélection n'est pas dans les colonnes 4 ou 7, sort de la procédure
If ActiveCell.Column = 4 Or ActiveCell.Column = 7 Then
 
    'comme la boucle de ton code ne servait à rien j'ai aussi modifié le début
        Select Case ActiveCell.Interior.ColorIndex
        Case 3
            nomcp = "Mr W"
            matricule = "2222222"
            naturecp = "CP"
            NombreCP = Selection.Cells.Count
        Case 7
            nomcp = "Mr X"
            matricule = "000000"
            naturecp = "RTT"
            NombreCP = Selection.Cells.Count
        Case 13
            nomcp = "Mr Y"
            matricule = "11111"
            naturecp = "RTT"
            NombreCP = Selection.Cells.Count
    End Select
 
    '*********************
    'placement des données
    '*********************
 
    With Sheets("Feuil2")
        .Range("C5").Value = nomcp
        .Range("C10").Value = naturecp
        .Range("C15").Value = matricule
        .Range("C20").Value = NombreCP
 
    '************************
    'code pour la/les date(s)
    '************************
        ' définit la variable fdate
        Select Case ActiveCell.Column 'en fonction de la colonne
            Case 4 'colonne 4
            Select Case ActiveCell.Row 'en fonction de la ligne
                Case 2 To 32 'de 2 à 32
                    fdate = "01/2008"
                Case 34 To 64 'de 34 à 64
                    fdate = "07/2008"
            End Select
            Case 7 'colonne 7
            Select Case ActiveCell.Row
                Case 2 To 32 'de 2 à 32
                    fdate = "02/2008"
                Case 34 To 64 'de 34 à 64
                    fdate = "08/2008"
            End Select
        End Select
 
        ' définit la variable ddate
        If ActiveCell.Offset(0, -2).Value < 10 Then
            ddate = "0" & CStr(ActiveCell.Offset(0, -2).Value) & "/"
        Else
            ddate = CStr(ActiveCell.Offset(0, -2).Value) & "/"
        End If
 
        ActiveCell.Offset(Selection.Cells.Count - 1, 0).Activate 'active la dernière cellule de la sélection
 
        ' définit la variable ddate2
        If ActiveCell.Offset(0, -2).Value < 10 Then
            ddate2 = "0" & CStr(ActiveCell.Offset(0, -2).Value) & "/"
        Else
            ddate2 = CStr(ActiveCell.Offset(0, -2).Value) & "/"
        End If
 
        ' définit la variable fd
        If Selection.Cells.Count = 1 Then 'si une seule cellule sélectionnée
            fd = "Le " & ddate & fdate
        Else 'sinon
            fd = "Du " & ddate & fdate & " au " & ddate2 & fdate
        End If
 
        .Range("C25").Value = fd 'place la donnée
 
    End With
 
End If
 
End Sub
 
Dernière édition:
Re : Ecriture d'une macro.

Merci Robert,

je viens de faire un essai de votre code. C'est déjà beaucoup mieux que ma macro de départ. Merci. Ce qui faudrait voir c'est pourquoi :
- Lorsque je selectionne ma zone de couleur de D5: D14, il me compte 10 jours à la place de 7 jours.
- Et que lorsque je selectionne la zone D30: D31 avec la zone G1:G3, il me retient que G1 pour la date, en sachant que je selectionne avec la touche Ctrl.

Je regarde cet Ap pour adapter le code à mon fichier, et je vous redonne des nouvelles.

Merci 😉
 
Re : Ecriture d'une macro.

Bonjour ST, bonjour le forum,

Ben du 5 au 14 il y a bien 10 jours non ?... C'est pas très clair. J'ai testé ton code initial et le résultat pour le nombre de jour est assez aléatoire il me semble.

La sélection de plages discontinues ne fonctionnera pas car il n'y a qu'une seule cellule active même si il y a 10 plages.

Puis ton tableau en doubles colonnes pour le code VBA c'est pas l'idéal...

Désolé mais avec le peu d'explications que tu donnes je ne vois pas comment faire.
 
Re : Ecriture d'une macro.

Bonsoir,

pour être plus précis. Mon tableau est un calendrier qui sert à gérer 4 personnes d'une même équipe au niveau absence.
Une personne à 2 couleurs qui la représente, une pour les CP et l'autre pour les RTT. Au total, ça fait 8 couleurs.
Je me sers de ces couleurs via une macro pour comptablilisé les Cp et Rtt d'une année.
Ce qui m'aurait interessé par exemple pour la couleur mauve D5: D14, c'est que je puisse en selectionnant cette zone, remplir automatique un bon de congé. Et comme le nbre de CP d'une personne est représenté par une couleur, dans ce cas là , ça faisait 7 jours de CP posés.
Le jaune représent un repos, voilà pourquoi,il faut bien que je fasse la différence entre chaque couleurs.
Pour le calcul des nbres de jours, j'ai gardé une partie de mon code. Et pour le calcul de la fourchette des dates, j'ai adapté votre code. Mais j'ai encore quelques soucis. Dans le cas d'une période à cheval entre deux mois. Et aussi j'ai remarqué qu'il y a une différence lorsque je selectionne de haut en bas ou de bas en haut, dans le secoond cas, il me note qu'un jour.

Voilà c'est jamais trop facile d'expliquer ce que l'on souhaite lorsque l'on a pas les personnes en face de soi.
J'espére que ma demande est réalisable.


Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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