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

Créer une macro

  • Initiateur de la discussion Initiateur de la discussion martine.basnier
  • Date de début Date de début

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 !

M

martine.basnier

Guest
Bonjour

Je suis secrétaire dans une entreprise du calvados, je me debrouille manuellement sous Excel mais la j'ai besoin de votre aide pour faire si possible une macro

J'ai un fichier Excel que je renseigne manuellement selon les CDD que nous faisons aux personnes venant chez nous

Voici les différentes colonnes :
Nom
Téléphone
Contrat Etablissement
Qualification
Début
Sem.
Fin Prévue
Fin réelle
Sal. EURO
Fac. EURO
Service Entreprise

J'ai besoin de votre aide pour que en colonne 14, il calcul le nombre de jour travaillée et que sur la feuille macro on est automatiquement les 3 colonnes suivantes

Nom Date d'entrée Nb jours travaillés

Je vous donne un fichier en exemple

J'espere que vous pourrez m'aider. Je suis dispo si vous avez des questions

Je vous remercie par avance

Martine
 

Pièces jointes

Re : Créer une macro

Bonsoir Martine et Bienvenue sur XLD

Est-ce que tu connais le filtre automatique ou élaboré?
Si oui cela pourrait une solution possible.

Tu peux aussi utiliser les sous-totaux ou le TCD.

EXEMPLE ci-dessous avec SOUS-TOTAUX

Pour les sous-totaux, j'ai ajouté l'entête HEURES en N1, puis sélectionner ton tableau
Ensuite je suis allé dans Données/Sous-Totaux et là j'ai suivi les indications à l'écran.
Pour le résultat final, j'ai masqué les colonnes non désirées puis cliquer sur le petit 2.


PS: Merci d'avoir pris le temps de créer un fichier exemple (et ce sans données confidentielles) 😉
 
Dernière édition:
Re : Créer une macro

Bonjour,

Merci pour cette solution mais...

Il me manque la date du premier contrat c'est ça mon problème.

Il me faut une feuille à part

Martine
 
Re : Créer une macro

Re

Comme je le disais avant SOUS-TOTAUX ou TCD
(TCD= Tableau Croisé Dynamique)
Voici ce que cela peut donner


L'avantage est que cela se fait sans macro (et comme tu dis savoir te débrouiller manuellement sous Excel, c'est une solution à privilégier, non ?)
Et le TCD peut se créer sur une nouvelle feuille.

Si cette solution t'intéresse, fais -le moi savoir, sinon d'autres ici te proposeront une macro VBA.
 
Dernière édition:
Re : Créer une macro

Bonjour,

J'ai réussi à faire avec ta méthode mais si une personne réussi à me faire ça sous forme de macro je serai encore plus contente

Merci de votre aide

Martine
 
Re : Créer une macro

bonjour

Votre macro fonctionne mais elle ne donne pas les bonnes réponses. La date d'entrée de l'ouvrier c'est la date de son premier contrat qu'il me faut.
Exemple pour l'ouvrier 4 c'est 06/11/2010 et non 19/12/2011

Enfin je ne peux pas voir le code que tu as écrit pourquoi ? je dois rater une étape

Merci de votre aide

Martine
 

Pièces jointes

Re : Créer une macro

Bonjour Martine,

Voici ton fichier corrigé.

Pour lire la macro, une fois ton fichier ouvert, tu tapes ALT+F11 pour ouvrir l'éditeur VBA. Dans la fenêtre "Projet - VBA Project", tu double-cliques sur "Feuil1(Fichier départ" et dans la fenêtre principale tu verras apparaître le code de la macro.

Pour info, voici le texte :

Code:
Private Sub CommandButton1_Click()
Dim Cel As Range, lg As Long, DLg As Long

DLg = Range("A65536").End(xlUp).Row
With Feuil2
    .Range("A2:C" & .Range("C1").End(xlDown).Row).ClearContents
    For Each Cel In Range("A2:A" & DLg)
        If .Range("A:A").Find(Cel.Value, LookIn:=xlValues, lookat:=xlWhole) Is Nothing Then
            lg = .Range("A65536").End(xlUp).Row + 1
            .Range("A" & lg) = Cel.Value
            .Range("B" & lg) = Cel.Offset(0, 5).Value
            .Range("C" & lg) = Cel.Offset(0, 13).Value
            Else
            .Range("C" & lg) = .Range("C" & lg) + Cel.Offset(0, 13).Value
            If Range("H" & Cel.Row) < Range("C" & Cel.Offset(-1, 0).Row) Then .Range("B" & lg) = Cel.Offset(0, 5).Value
        End If
    Next
End With
End Sub

Bonne journée.

Cordialement.

Edit : pour que cela fonctionne correctement, il faut que les dates soient classées en ordre décroissant.
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

B
  • Question Question
Réponses
9
Affichages
948
T
Réponses
0
Affichages
839
TORJOR
T
P
Réponses
9
Affichages
4 K
Polus Cacahus
P
A
Réponses
0
Affichages
894
abercrom75
A
N
  • Question Question
Réponses
5
Affichages
3 K
K
Réponses
2
Affichages
686
Karine11
K
P
Réponses
2
Affichages
3 K
psimbsler
P
C
Réponses
5
Affichages
2 K
cleopatre
C
C
Réponses
11
Affichages
2 K
choufleuri
C
F
Réponses
29
Affichages
6 K
F
G
Réponses
12
Affichages
4 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…