écraser ligne déjà existente par la nouvelle copiée macro xls

Fermé
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015 - 15 févr. 2015 à 12:33
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 - 23 févr. 2015 à 10:12
Bonjour à tous,

Je vous explique mon problème:

Je copie certaine cellule de ma feuille nommée:"FTD".
Je l'ai copie dans une autre feuille intitulée:"HISTORIC"
Les données se copient à la première ligne vide.
Ce que je veux, c'est lors d'une nouvelle copie, Si les informations en colonne A et B sont identique, effacer la ligne en question et la remplacer par la nouvelle.

Voici ma macro de base:
Sub SAUVEGARDER()

Dim Source As String
Dim Cible As String
Source = "FTD"
Cible = "HISTORIC"


'Transfert données de la fiche ModFaxture vers la fiche Client
Dim LigneEncours As Long
'Chargement du nom des feuilles origine et destination
'Calcul de la ligne courante
LigneEncours = Worksheets(Cible).Range("A" & Rows.Count).End(xlUp).Row + 1
'Copie des valeurs
With Worksheets(Cible)
.Range("A" & LigneEncours) = Worksheets(Source).Range("A2").Value
.Range("B" & LigneEncours) = Worksheets(Source).Range("F2").Value
.Range("C" & LigneEncours) = Worksheets(Source).Range("E40").Value
.Range("D" & LigneEncours) = Worksheets(Source).Range("H40").Value
.Range("E" & LigneEncours) = Worksheets(Source).Range("I40").Value
.Range("F" & LigneEncours) = Worksheets(Source).Range("J40").Value
.Range("G" & LigneEncours) = Worksheets(Source).Range("K40").Value
End With

'
End Sub

Quelqu'un peut-il m'aider svp?

Merci d'avance.
A voir également:

24 réponses

Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
15 févr. 2015 à 22:45
Bonjour,
Juste au passage, je comprends : Si les informations en colonne A et B sont identique aux valeurs sources A2 et F2 alors écraser la ligne...
Ceci impose de contrôler toutes les lignes existantes dans le fichier cible en réalisant une boucle sur les valeurs A et B.
Essayer avec ceci pour le bloc With...
With Worksheets(Cible)
For c = 2 To LigneEncours - 1
    If (.Range("A" & c) = Worksheets(Source).Range("A2").Value And .Range("B" & c) = Worksheets(Source).Range("F2").Value) Then
        liok = c
        Exit For
    End If
    liok = c
Next c
 .Range("A" & liok) = Worksheets(Source).Range("A2").Value
 .Range("B" & liok) = Worksheets(Source).Range("F2").Value
 .Range("C" & liok) = Worksheets(Source).Range("E40").Value
 .Range("D" & liok) = Worksheets(Source).Range("H40").Value
 .Range("E" & liok) = Worksheets(Source).Range("I40").Value
 .Range("F" & liok) = Worksheets(Source).Range("J40").Value
 .Range("G" & liok) = Worksheets(Source).Range("K40").Value
End With

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 15:16
Merci Le Pingou. Cependant j'aimerai un copié des lignes ci dessus en plus vers un autre classeur qui sera fermée ou ouvert.
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 15:17
Sinon première partie résolu. Un grand a merci!!!!
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
Modifié par Le Pingou le 16/02/2015 à 17:27
Bonjour,
Eh bien pour cela il faut savoir où est le classeur en question ainsi que la feuille concernée et si possible le nom du classeur.... !


Salutations.
Le Pingou
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 20:33
le premier classeur s'appelle FDT, la feuille HISTORIC et se trouve sur mon bureau. Le second se trouve dans dans C:\FDT\SALARIE et se nomme MICKAEL CASTAIGNEDE 02_2015 et la feuille egalement HISTORIC.
Ce que je veux c'est lors de l'enregistrement des données dans MC 02_2015, je veux que ces mêmes données s'enregistre dans FDT en même temps
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
16 févr. 2015 à 21:37
Bonjour,
Merci pour les informations.
Donc la feuille [HISTORIC] des 2 classeurs est rigoureusement identique concernant les données et la structure Oui / Non ?

Note, nous ne sommes pas dans le même bureau alors un petit bonjour c'est plus convenable ...
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 22:37
Bonjour dsl....

Oui elles sont identiques.....
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
16 févr. 2015 à 22:11
Bonsoir,
Petite confirmation le premier classeur est bien celui qui a les 2 feuilles [FDT] et [HISTORIC]
Merci de votre réponse.

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 22:40
Re Bonjour,

En faite les deux classeur ont la même structure. Le maitre est FTD. Dedans jy rentre des données que je sauvegarde avec le nom du technicien et le mois. Cependant les infos sont rentrees semaine par semaine d'ou la necessite de faire une sauvegarde dans les deux documents. En effet FTD aura les donnée de tout les techniciens si modification à la semaine.
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 22:42
Si vous voulez je peux vous envoyer mon classeur FDT et le second?
0

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

Posez votre question
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
16 févr. 2015 à 23:14
Bonsoir,
Merci, une proposition demain en fin de journée.
J'ai réalisé un petit montage alors vos 2 exemples sont les bienvenu, les compresser en ZIP et le mettre sur https://www.cjoint.com/ et poster le lien
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 23:42
Bonsoir,

Ci joint le lien https://www.cjoint.com/c/EBqxYcK9pEZ

La macro b permet de faire la sauvegarde entre les feuilles FTD et HISTORIC des deux classeur.

Enfin une sauvegarde des donnée à la semaine est il possible à regarder?

Vraiment merci pour votre aide, c'est tellement rare de rencontrer des gens serviable
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
16 févr. 2015 à 23:43
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
16 févr. 2015 à 23:44
Merci, proposition demain
Bonne nuit.
Salutations.
Le Pingou
0
Merci à vous aussi.
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
17 févr. 2015 à 08:11
Bonjour,
Merci pour le fichier. Une fois était suffisant, je suppose que c'est 2 fois le même.
Pour la prochaine, éviter d'insérer un point accoler au lien car il a tendance à si ajouter et ainsi le lien devient erroné...donc non valide.

0
Bonjour,

Très bien j'y veillerai
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
17 févr. 2015 à 09:02
Bonjour,
Eh bien là, c'est désolant, je ne trouve pas trace de ma proposition concernant : Voici ma macro de base: Sub SAUVEGARDER() et en plus aucune macro de ce nom dans les 30 modules qui sont pratiquement vide.... !

0
Bonsoir as tu eu le temps de regarder?
0
Bonsoir,

As tu réussi à t'en sortir?
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
Modifié par Le Pingou le 17/02/2015 à 21:41
Bonsoir,
J'ai pensé que vous me donneriez une explication par rapport à mon message de ce matin.
De plus impossible de faire quoi que ce soit avec des fichiers dont la majorité des feuilles sont masqués.


Salutations.
Le Pingou
0
Pour voir les feuille il faut appuyer sur les macro correspondante.

Par rapport au macro quasi vide moi je ne comprends pas chez moi elle existe.

Souhaitez vous une précision supplémentaires?
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
18 févr. 2015 à 08:56
Bonjour,
C'est en ordre pour les feuilles masquées.
Par rapport au macro quasi vide ...
Je reprends :
je ne trouve pas trace de ma proposition concernant : Voici ma macro de base: Sub SAUVEGARDER() et en plus aucune macro de ce nom dans les 30 modules qui sont pratiquement vide.... !

1.- Je fais référence à ma proposition du message 1

2.- Selon : Voici ma macro de base: Sub SAUVEGARDER(), elle est introuvable dans les 30 modules dont seul 9 contiennent des procédures.

0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
18 févr. 2015 à 16:18
Bonjour,
Pa simple de comprendre comment fonctionne votre application, cependant est-ce que ce serait correct selon fichier joint : https://www.cjoint.com/?3BsqCnqluI0

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
18 févr. 2015 à 17:37
Bonjour,

Merci pour ce fichier. Cependant ce que je veux dans la mesure du possible c'est un historic avec les numéro de semaine avec le mëme type de tableau que celui dans la feuille historic. Une sorte de recap hebdomaire genre en S6 il y'a 4 jour travaillé 2GD 1PR et ceux pour chaque technicien.

Cdt,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
18 févr. 2015 à 17:58
Bonjour,
Ne serait-il pas plus simple de réaliser un petit exemple manuellement avec petit commentaire directement dessus et ensuite le mettre sur ci-joint.com.
Vous ne m'avez pas répondu à : ceci
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
18 févr. 2015 à 18:17
Re,

Voici ce que je souhaite dans la feuille HISTORIC_SEMAINE https://www.cjoint.com/c/EBsszogI8qi

Beaucoup de module c'et vrai on était créé par rapport au tests que j'effectué.

J'espère que ce nouveau fichier vous aidera.

EN attente de vous lire.
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
19 févr. 2015 à 17:04
Bonjour,
Ma proposition traite les 2 feuilles [HISTO....] via le bouton [Mise à....] , le lien : https://www.cjoint.com/c/EBtrockPjd1
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
19 févr. 2015 à 22:08
BONSOIR,

Merci infiniment pour ce petit bijoux que tu m'as fait. ce dernier fonctionne à la perfection!!!!!!

Une dernière chose, par technicien va se créer une FDT. Ces FDT sont sauvegardées dans C:\FDT\SALARIE\dossier du tech\fichier du tech.xlsm.
Si je viens modifier des valeurs sur ce fichier, je veux pouvoir les sauvegarder sur la FDT source...

Est ce possible?

Cdt,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
19 févr. 2015 à 23:41
Bonjour,
Content pour vous, avez-vous contrôlé que les données sont correctes ... ?

0
J'ai ré vérifié à l'instant. Au première abord pas de souci.

Vous avez pu voir pour le message d'avant?
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 10:56
Bonjour,
Eh bien non, en faisant un test plus poussée, il se trouve que les montants en colonne [I] de la feuille [HISTORIC_SEMAINE] sont incorrects et en plus les valeurs de la dernière semaine de la feuille [FTD] sont simplement ignorées par la procédure (faute d'instruction de ma part).
Dans la journée la correction... !

0
Bonjour,

Ton professionnalisme est très apprécié.

Dans la correction pourrais tu y incorporer SI CELA EST POSSIBLE la condition que si une modification s'effectue sur un classeur nommé avec le nom de n'importe quelle technicien celle ci soit prise en compte dans le classeur source FDT?

EN TE REMERCIANT.


CDT,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 14:53
Bonjour,
C'est non dans ce concept.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 15:39
Bonjour,
Voici la version corrigée : https://www.cjoint.com/?3BupXPNCGWS

0
Bonjour et merci pour cette modification.

Pour la condition peux ton la traduite sous une forme de macro supplémentaire?

De plus serait faire une macro permettant d'une part d'ouvrir une feuille depuis m'importe qu'elle autre feuille. Et enfin une macro supprimant les valeur d'une ligne de n'importe quelle feuille?

En attente de te lire.

Cdt,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 17:49
Bonjour,
Pour la condition peux ton la traduite sous une forme de macro supplémentaire?
C'est incompréhensible.

De plus serait faire une macro permettant d'une part d'ouvrir une feuille depuis m'importe qu'elle autre feuille.
Pas besoin de macro, Il suffit d'insérer un lien hypertexte qui ponte vers la feuille choisi

Et enfin une macro supprimant les valeurs d'une ligne de n'importe quelle feuille?
Cela on le réalise sans macro en sélectionnant la plage des valeurs et ensuite Delete

0
Ce que je voulais dire c'est créé une macro permettant de sauvegarder les donnée modifié non pas sur FDT technicien comme il se doit v mais vers la FDT pour avoir un fichier à jour.

Lors de l'exécution de la macro sauvegarde dans une FDT TECH à la fin demander avant de quitter d'exécuter cette macro.

Cdt
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 18:38
Bonjour,
Il serait bien que vous décriviez le travail que vous devez réaliser, ou le concept de l'application car là il me semble que c'est du coup par coup... ou je me trompe.

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
20 févr. 2015 à 18:52
Bonjour,

Partons d'une feuille FTD vièrge. A la fin de la première semaine, une création d'une FDT par technicien est faite avec l'enregistrement des données de facon hebdomadaire et mensuel. Lors de la deuxième semaine la FDT est remplie via celle déjà créé et non de la FDT source. le HIc c'est que l'historique générale se trouve dans la FDT source, d'où l'importance de créer une macro me permettant de sauvegarder les données modifiées sur les FDT techniciens vers la FDT source.
Sinon tout le reste est ok.

Cdt,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
20 févr. 2015 à 22:03
Bonjour,
Merci pour l'explication.
Dans ce cas vous faite le chemin inverse soit du fichier technicien vers l'historique du fichier source en utilisant ma proposition, il faut juste attribuer les bonnes références aux 3 objets [Worhsheet].
En parcourant les divers codes et leur niveau d'écriture dans les modules, j'estime que ce doit être faisable par vos soins.
La procédure de préférence dans le fichier technicien.

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
21 févr. 2015 à 11:42
Bonjour,

Suite à ta réponse d'hier, j'ai fait une petit modification sur la macro et ceci m'indique toujours une erreur.

Voila ce que j'ai fait:

Sub Renseigner_HISTORIC_global_semaine1()
Dim shso As Worksheets
Dim shcigl
Dim c As Integer, deli As Integer, li As Integer, liok As Integer
Dim chemin$, Salarie$, Fichier$
chemin = "C:\FDT\SALARIE\"
client = Sheets("FTD").Range("A2").Value
Fichier = client & " " & Format(Sheets("FTD").Range("F2"), "MM_YYYY")
Const coefGr = 84: Const coefPR = 18

Workbooks.Open FileName:=("C:\FDT\FDT.xlsm")

Set shso = "chemin" & "Fichier" & Sheets("FTD")
shcigl = Workbooks("FDT").Sheets("HISTORIC")
If shso.Range("H40") = "0" Then
MsgBox "Pas de code projet, donc de jour(s) travaillé(s)/de Client et de projet!", vbCritical: Exit Sub
ElseIf shso.Range("A2") = "" Then
MsgBox "Aucun Nom de Salarié en Cellule A2!", vbCritical: Exit Sub
End If
' *** copier les valeurs ou mise à jour des valeurs existantes
With shcigl
deli = .Cells(Rows.Count, 1).End(xlUp).Row
If deli > 5 Then
For c = 6 To deli
If (.Range("A" & c) = shso.Range("A2").Value And .Range("B" & c) = shso.Range("F2").Value) Then
liok = c
Exit For
End If
liok = c + 1
Next c
Else
liok = deli + 1
End If
.Range("A" & liok) = shso.Range("A2").Value
.Range("B" & liok) = shso.Range("F2").Value
.Range("C" & liok) = shso.Range("E40").Value
.Range("D" & liok) = shso.Range("H40").Value
.Range("E" & liok) = shso.Range("I40").Value
.Range("F" & liok) = shso.Range("J40").Value
.Range("G" & liok) = shso.Range("K40").Value
.Range("H" & liok) = (shso.Range("J40").Value * coefGr) + (shso.Range("K40").Value * coefPR)
.Range("I" & liok) = .Range("C" & liok) + .Range("H" & liok)
End With
Renseigner_HISTORIC_semaine shso, coefGr, coefPR
Set shso = Nothing
Set shcigl = Nothing
End Sub

Sub Renseigner_HISTORIC_semaine(shso, coefGr, coefPR)
Dim shcism
Dim tbl(1 To 10) As Variant, ccu As Variant
Dim c As Integer, deli As Integer, li As Integer, liok As Integer
Dim smc As Integer, smde As Integer, sm As Integer
Dim fism As Boolean

shcism = worbooks("FDT").Sheets("HISTORIC_SEMAINE")
' *** cumuler et copier les valeurs ou mise à jour des valeurs existantes
smde = Application.Min(shso.Range("c9:c39"))
ccu = Array(0, 5, 8, 9, 10, 11)
smc = smde: fism = False
For li = 9 To 39
If shso.Cells(li + 1, 3).Value <> smc Then fism = True
For c = 1 To 5
tbl(c + 3) = tbl(c + 3) + shso.Cells(li, ccu(c))
Next c
tbl(9) = (tbl(7) * coefGr) + (tbl(8) * coefPR)
tbl(10) = tbl(4) + tbl(9)
If fism Then
If tbl(5) <> 0 Then
tbl(1) = shso.Range("A2").Value
tbl(2) = shso.Range("F2").Value
tbl(3) = smc
With shcism
deli = .Cells(Rows.Count, 1).End(xlUp).Row
If deli > 5 Then
For c = 6 To deli
If (.Range("A" & c) = tbl(1) And .Range("B" & c) = tbl(2) And .Range("C" & c) = tbl(3)) Then
liok = c
Exit For
End If
liok = c + 1
Next c
Else
liok = deli + 1
End If
shcism.Range("A" & liok).Resize(1, UBound(tbl)) = tbl
End With
End If
Erase tbl
smc = smc + 1: fism = False
End If
Next li
MsgBox " Les 2 feuilles [HISTORIQUE MENSUEL/SEMAINE] sont à jour!"
Set shcism = Nothing
End Sub
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
Modifié par Le Pingou le 21/02/2015 à 17:44
Bonjour,
Sans le message d'erreur, impossible de vous répondre.
Avez-vous mis la procédure dans le classeur technicien Oui / Non ?


Salutations.
Le Pingou
0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
21 févr. 2015 à 17:58
Bonjour,

Oui la procédure a été mise dans le classeur technicien.

Vous trouverez en pièce jointe les deux imprimes avec le message d'erreur et la ligne qui pose problème.

https://www.cjoint.com/c/EBvsi0qPMzU

Cdt,
0
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 1 448
22 févr. 2015 à 08:56
Bonjour,
Eh bien c'est normal, comme la procédure est dans le classeur technicien qui est la source des données, sa référence est simplement la feuille de ce classeur soit : Sheets("FTD").
Par contre la cible est le classeur [FDT.xlsm] qui se trouve dans le répertoire et là c'est correct avec [Workbooks("FDT").Sheets("HISTORIC")] par contre la ligne de code doit être [Set shcigl = Workbooks("FDT").Sheets("HISTORIC")] .
Autre point : les noms des variables dans la ligne de définition [Dim chemin$, Salarie$, Fichier$] doivent être identique dans la procédure et ce n'est pas le cas, par exemple [chemin$] différent de [chemin].
Pour finir je me pose une question, si vous avez dans le classeur technicien 2 feuille [Histo...] alors vous devez aussi les mettre à jour tout comme celles du classeur [FDT.xlsm] Oui ou Non ?
Si Oui alors le réaliser dans la même procédure !

0
ksta89 Messages postés 77 Date d'inscription dimanche 15 février 2015 Statut Membre Dernière intervention 9 juin 2015
22 févr. 2015 à 11:38
Bonjour,

J'ai suivi votre facon de faire. Problème: Bon déjà j'ai enlevé mes variables Fichier, client et chemin car elle ne me servait plus à rien. Cependant quand j'éxécute la macro il me dit que la ligne Set shso = sheets("FTD") est incompatibility et la surligne en jaune.

Sub Renseigner_HISTORIC_global_semaine1()
Dim shso As Worksheets
Dim shcigl As Worksheets
Dim c As Integer, deli As Integer, li As Integer, liok As Integer
Const coefGr = 84: Const coefPR = 18

Set shso = Sheets("FTD")
Set shcigl = Workbooks("FDT").Sheets("HISTORIC")
If shso.Range("H40") = "0" Then
MsgBox "Pas de code projet, donc de jour(s) travaillé(s)/de Client et de projet!", vbCritical: Exit Sub
ElseIf shso.Range("A2") = "" Then
MsgBox "Aucun Nom de Salarié en Cellule A2!", vbCritical: Exit Sub
End If
' *** copier les valeurs ou mise à jour des valeurs existantes
With shcigl
deli = .Cells(Rows.Count, 1).End(xlUp).Row
If deli > 5 Then
For c = 6 To deli
If (.Range("A" & c) = shso.Range("A2").Value And .Range("B" & c) = shso.Range("F2").Value) Then
liok = c
Exit For
End If
liok = c + 1
Next c
Else
liok = deli + 1
End If
.Range("A" & liok) = shso.Range("A2").Value
.Range("B" & liok) = shso.Range("F2").Value
.Range("C" & liok) = shso.Range("E40").Value
.Range("D" & liok) = shso.Range("H40").Value
.Range("E" & liok) = shso.Range("I40").Value
.Range("F" & liok) = shso.Range("J40").Value
.Range("G" & liok) = shso.Range("K40").Value
.Range("H" & liok) = (shso.Range("J40").Value * coefGr) + (shso.Range("K40").Value * coefPR)
.Range("I" & liok) = .Range("C" & liok) + .Range("H" & liok)
End With
Renseigner_HISTORIC_semaine shso, coefGr, coefPR
Set shso = Nothing
Set shcigl = Nothing
End Sub

Sub Renseigner_HISTORIC_semaine1(shso, coefGr, coefPR)
Dim shcism
Dim tbl(1 To 10) As Variant, ccu As Variant
Dim c As Integer, deli As Integer, li As Integer, liok As Integer
Dim smc As Integer, smde As Integer, sm As Integer
Dim fism As Boolean

Set shcism = worbooks("FDT").Sheets("HISTORIC_SEMAINE")
' *** cumuler et copier les valeurs ou mise à jour des valeurs existantes
smde = Application.Min(shso.Range("c9:c39"))
ccu = Array(0, 5, 8, 9, 10, 11)
smc = smde: fism = False
For li = 9 To 39
If shso.Cells(li + 1, 3).Value <> smc Then fism = True
For c = 1 To 5
tbl(c + 3) = tbl(c + 3) + shso.Cells(li, ccu(c))
Next c
tbl(9) = (tbl(7) * coefGr) + (tbl(8) * coefPR)
tbl(10) = tbl(4) + tbl(9)
If fism Then
If tbl(5) <> 0 Then
tbl(1) = shso.Range("A2").Value
tbl(2) = shso.Range("F2").Value
tbl(3) = smc
With shcism
deli = .Cells(Rows.Count, 1).End(xlUp).Row
If deli > 5 Then
For c = 6 To deli
If (.Range("A" & c) = tbl(1) And .Range("B" & c) = tbl(2) And .Range("C" & c) = tbl(3)) Then
liok = c
Exit For
End If
liok = c + 1
Next c
Else
liok = deli + 1
End If
shcism.Range("A" & liok).Resize(1, UBound(tbl)) = tbl
End With
End If
Erase tbl
smc = smc + 1: fism = False
End If
Next li
MsgBox " Les 2 feuilles [HISTORIQUE MENSUEL/SEMAINE] sont à jour!"
Set shcism = Nothing
End Sub
0