Macro (Do While)

Résolu
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici mon fichier :
https://www.cjoint.com/?BCpppNzdPyB

Et dans le 2eme onglet ce à quoi je souhaite arriver, sachant que j'ai environ 20 matricule à traiter,

Je pense passer par un Do While mais je ne vois pas comment faire, sachant qu'il faut le faire pour les matricules mais aussi pour les dates.

J'espère avoir été claire, je reste à disposition,

Cordialement


A voir également:

5 réponses

Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Je pense que oui, mais je n'ai pas trouvé ce que vous voulez réaliser !
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Sub copie_donnees_F2()
Dim a(), b(), c(), d(), e()
Dim F1 As Worksheet, F2 As Worksheet
Dim D_J_MF1 As Integer, First_Col_PersXF1 As Integer, P_L_LAF2 As Integer, P_L_LABF2 As Integer
Dim Lig_BF1 As Range, Nbr_Personne As Integer, D_C_LBF1 As Integer
Dim Periode, Cel_Fin As Integer, Matricule

Set F1 = Worksheets("Feuil1")
Set F2 = Worksheets("Feuil2")

F1.Activate
'pour la dernière colonne de la ligne 2
D_C_LBF1 = F1.Cells(2, Columns.Count).End(xlToLeft).Column
'Definition Plage de cellule pour Nombre de personnes
Set Lig_BF1 = F1.Range(Cells(2, 2), Cells(2, D_C_LBF1))
'Recherche du Nombre de personne
Nbr_Personne = Application.CountIf(Lig_BF1, "*Heures Vendues*")
'pour dernier jour du mois colonne A
D_J_MF1 = F1.Range("A" & Rows.Count).End(xlUp).Row - 2
'Periode
Periode = Int(Format(F1.Range("A3"), "MM"))

ReDim a(D_J_MF1), b(D_J_MF1), c(D_J_MF1), d(D_J_MF1)

For iter = 0 To Nbr_Personne - 1
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Colonne de depart pour chaque personne
First_Col_PersXF1 = 2 + (9 * iter)
'Premiere ligne libre F2
P_L_LAF2 = F2.Range("A" & Rows.Count).End(xlUp).Row + 1

'Cellule Fin Plage
If iter > 0 Then
Cel_Fin = P_L_LAF2 + D_J_MF1 + 1 - 4
Else
Cel_Fin = D_J_MF1 + 1
End If

'Copies
F1.Activate
'Matricule
Matricule = Mid((F1.Cells(1, First_Col_PersXF1)), InStr(1, F1.Cells(1, First_Col_PersXF1), "matricule", vbTextCompare) + 9)
'Date colonne fixe
b = Application.Transpose(F1.Range("A3:A" & D_J_MF1))
'Heures Vendues
c = Application.Transpose(F1.Range(Cells(3, First_Col_PersXF1), Cells(D_J_MF1, First_Col_PersXF1)))
'Heures TNF
d = Application.Transpose(F1.Range(Cells(3, First_Col_PersXF1 + 1), Cells(D_J_MF1, First_Col_PersXF1 + 1)))
'Heures TT
e = Application.Transpose(F1.Range(Cells(3, First_Col_PersXF1 + 6), Cells(D_J_MF1, First_Col_PersXF1 + 6)))

'Recopies
F2.Activate
'Matricule
F2.Range(Cells(P_L_LAF2, 1), Cells(Cel_Fin, 1)) = Application.Transpose(Matricule)
'Date colonne fixe
F2.Range(Cells(P_L_LAF2, 2), Cells(Cel_Fin, 2)) = Application.Transpose(b)
'Periode ?? j'ai pris le mois
F2.Range(Cells(P_L_LAF2, 3), Cells(Cel_Fin, 3)) = Application.Transpose(Periode)
'Heures Vendues
F2.Range(Cells(P_L_LAF2, 4), Cells(Cel_Fin, 4)) = Application.Transpose(c)
'Heures TF
F2.Range(Cells(P_L_LAF2, 5), Cells(Cel_Fin, 5)) = Application.Transpose(c)
'Heures TNF
F2.Range(Cells(P_L_LAF2, 6), Cells(Cel_Fin, 6)) = Application.Transpose(d)
'Heures TT
F2.Range(Cells(P_L_LAF2, 7), Cells(Cel_Fin, 7)) = Application.Transpose(e)
Next iter

Application.DisplayAlerts = True
Application.ScreenUpdating = False
End Sub


Je pense que cela correspond a ce que vous vouliez. Par contre Periode??, j'ai pris le mois.....
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Merci :) ça à l'air d'être pas mal :)

oui oui période c'est le mois :)

Par contre une chose, c'est possible de changer le nom de Feuil1 et Feuil2 ?
De mettre pour Feuil1, "feuille active"
Et pour feuil2, je vais renommé en DATA
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,
Pour F2 ok pour DATA
Pour F1, il faudra passer par le nom de la feuille active. Je suppose que vous avez une feuille par mois.

Bon courage
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Oui une feuille par mois mais c'est pas possible de lui dire "Feuille active" plutôt que de mettre un nom ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,
Je regarde la faisabilite.

A+
0
Le Pingou Messages postés 12250 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Je vois que vous avez la solution.
A une prochaine.
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Oui ça devrait le faire,

Merci de vous y être interessé
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

Nom_feuille = ActiveSheet.Name
Set F1 = Worksheets(Nom_feuille)

Vous clicquez sur la feuille que vous voulez traiter ensuite vous lancez la macro.
Maintenant il, y a peut-etre mieux a faire?
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Merci de ton aide,

Je reviens vers toi j'ai aperçu un "petit" problème,
Quand le salarié est en CP, quand je lance la macro ça me sort en heure travaillé total ... y'a t-il une solution ? Tu vois ce que je veux dire ?

Merci d'avance !
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Sur la feuille "Feuil1" colonne H (TOTAL Jour) il y a---->=SOMME(B3+C3+D3) et D3="HEURES Abs CP,MA,AT". C'est pas moi!
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Oui je sais que c'est pas toi ... mais le fichier ne provient pas de moi non plus (là n'est pas la question) mais comme c'est en colonne et pas en ligne, je peux pas modifier pour chaque salarié ... est-il possible de changer la macro ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,
Oui.
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Si tu peux pas c'est pas grave, je peux faire une formule après la macro pour trouver le résultat ...
dit moi juste si tu as le temps ou pas ;)

Merci en tout cas ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,
Qu'est ce qu'il se passe pour:
F2.Cells(x, 7) = F2.Cells(x, 7) - a(x - P_L_LAF2)

Parce que chez moi, tout ce passe normalement
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
ça se surligne en jaune et apres quand je vais sur la feuil2 j'ai le premier matricule qui sort sur 30 lignes et les 2 dernieres sont rempli de #N/A
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Le problème a été résolu avec le dernier code ... je vais tester l'empilage et jte dit :) merci beaucoup en tout cas
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Pour l'empilage c'est nickel :)

Jte remercie !! =)
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,
Oui, parce Cel_Fin n'etait calcule pour plusieurs tours de macro.

s = Int(F1.Cells(5, 4).Value)

Il faut enlever cette ligne, elle me servait de test
0
Lentzouille2 Messages postés 806 Date d'inscription   Statut Membre Dernière intervention   39
 
Vu que la ça fonctionne y'a pas besoin de l'enlever si ?
0