Récupération données d'un onglet sur un autre [résolu]

  • Initiateur de la discussion Initiateur de la discussion Ludo58
  • 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 !

Ludo58

XLDnaute Nouveau
Voici ma demande : Je souhaite automatiser certains calculs d'heures et ainsi éviter de le faire manuellement.

Dans l'onglet "Saisie manuelle", je saisie le nom des personnes ayant travaillé et leur horaires de début et fin de poste.

Dans l'onglet "Calcul auto", je souhaiterai que les zones en rouge soient renseignées automatiquement, donc que :
1) les différents cycles horaires notés dans l'onglet "Saisie manuelle" soient repertoriés à partir de B4 et C4
2) le nombre de personnes ayant effectué le cycle horaire renseigné en B + C soit indiqué dans la colonne A ("Nombre de personnes")

J'exploite ensuite les données de l'onglet "Calcul auto".

J'ai déjà réusi à avancer mais quand j'ai un cycle horaire avec la même heure de début et une heure de fin différente, il me note que le premier.

J'espère avoir été assez clair dans mes explications. Si vous voulez d'autres renseignements, n'hésitez pas à les demander.

Le fichier est joint.

Merci par avance de votre aide

Ludo58
 

Pièces jointes

Dernière édition:
Re : Récupération données d'un onglet sur un autre

Bonjour François,

Cela n'ira pas, c'est un peu compliqué. Je vais refaire un fichier que ma sercretaire a déjà en partie renseigné pour que tu comprennes mieux e que je veux.

Merci

Ludo58
 
Re : Récupération données d'un onglet sur un autre

Bonjour Ludo58, bienvenue sur XLD,

Avec ce genre de problème on se prend vite la tête avec des formules.

Par VBA c'est relativement simple à comprendre.

La macro dans le code de la 1ère feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Activate()
Dim tablo, d As Object, i As Long, t As String, a, b, R(), s
With Feuil2 'CodeName de la feuille
  tablo = .Range("B4:C" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
  t = tablo(i, 1) & " " & tablo(i, 2)
  d(t) = d(t) + 1 'comptage
Next
a = d.keys: b = d.items
ReDim R(d.Count - 1, 2) 'base 0
For i = 0 To d.Count - 1
  s = Split(a(i))
  R(i, 0) = b(i)
  R(i, 1) = s(0)
  R(i, 2) = s(1)
Next
[A4].Resize(d.Count, 3) = R
[B4].Resize(d.Count, 2).Replace ",", "."
Range("A" & d.Count + 4 & ":C" & Rows.Count).ClearContents
End Sub
Elle se lance quand on active la feuille.

Fichier joint.

Edit : bonjour Gardien de phare, je ne t'avais pas vu.

A+
 

Pièces jointes

Dernière édition:
Re : Récupération données d'un onglet sur un autre

Re,

Une variante, avec calcul de la durée :

Code:
Private Sub Worksheet_Activate()
Dim tablo, d As Object, i As Long, t As String, a, b, R(), s
With Feuil2 'CodeName de la feuille
  tablo = .Range("B4:C" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
  t = Replace(tablo(i, 1) & " " & tablo(i, 2), ",", ".")
  d(t) = d(t) + 1 'comptage
Next
a = d.keys: b = d.items
ReDim R(d.Count - 1, 3) 'base 0, 4 colonnes
For i = 0 To d.Count - 1
  s = Split(a(i))
  R(i, 0) = b(i)
  R(i, 1) = s(0)
  R(i, 2) = s(1)
  R(i, 3) = Val(s(1)) - Val(s(0)) 'Durée
Next
Application.ScreenUpdating = False 'fige l'écran
[A4].Resize(d.Count, 4) = R
[A4].Resize(d.Count, 4).Sort [B4], , [C4], Header:=xlNo 'tri sur H début et H fin
Range("A" & d.Count + 4 & ":D" & Rows.Count).ClearContents
End Sub
Fichier (3).

Remarque : il est plus classique d'utiliser le format "heure" : 13:30 au lieu de 13,5.

La macro fonctionnera sans problème avec ce format.

A+
 

Pièces jointes

Dernière édition:
Re : Récupération données d'un onglet sur un autre

Bonjour à tous,

Merci pour vos lumières, j'ai trouvé mon bonheur avec le fichier de job75. Je n'ai pas encore tout compris dans la macro mais j'ai déjà réussi à la transposer dans le fichier cible. Je vais bosser maintenant pour comprendre le code et les fonctions utilisées 🙂

En tout cas, merci à job75 pour sa trouvaille mais aussi à Gardien de phare pour ses avancées.

A bientôt peut être.

Cordialement

Ludo58
 
- 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

Retour