Microsoft 365 Copier les valeurs d'une cellule après une RECHERCHEV si vide

r3vzone

XLDnaute Nouveau
Bonjour,

Je suis débutant, ne soyez pas trop raide ave moi svp :)

Je suis en train de mettre en place une petite feuille de calcul (pas de soucis jusque-là).
Feuille "Calculateur".
Ce Calculateur fait appel à mon autre feuille HS-Janvier-23.

Dans HS-Janvier-23 se trouve les noms du personnel, leur statut (TIT ou CTR - les codes à appliquer n'étant pas les même).

Dans mon Calculateur, j'ai la liste des personnes que je récupère sur HS-Janvier-23.

Depuis le nom, je fais une RECHERCHEV afin d'y trouver le prénom, le matricule et surtout la cellule correspondante à l'agent dans la colonne S(OBSERVATIONS).

Dans le Calculateur, dans la case Observations (qui fait référence à la colonne Observations de la feuille HS-Janvier-23), j'effectue une : =RECHERCHEV(Calculateur!K8;'HS-Janvier-23'!B2:S90;18;FAUX) afin de trouver la correspondance avec l'agent. Pas de soucis jusque-là.

Dans Résultat (Calculateur) je fais : =SI(RECHERCHEV(Calculateur!K8;'HS-Janvier-23'!B2:S90;18;FAUX)=0;J32;"Non vide") afin de savoir si lors de ma recherche la cellule est vide, si elle l'est alors j'écris mon résultat dans le calculateur (J32 (masquée) copié dans K12), si elle est déjà remplie, je ne fais rien (et marque NON VIDE).

Mon problème est que je souhaiterais quand j'ai finis mes calculs sur mon Calculateur, que se copie le résultat (K12) dans ma RECHERCHEV correspondante à l'agent CAD dans la cellule correspondante à l'agent dans HS-JANVIER-23 dans la colonne OBSERVATIONS si la case est vide.

Je ne sais pas si j'ai été clair, si ce n'est pas le cas, dites le moi ;).

Les valeurs calculées dans Calculateur sont affichées dans RESULTAT (K12) - Même résultat dans la cellule J32 (masquée).

Je mets le fichier en PJ.

En gros je fais un calcul, il cherche l'agent, vérifie que la cellule de l'agent dans la colonne S OBSERVATIONS (HS-Janvier-23) est vide, et y copie mon résultat (K12). Et c'est là que je n'arrive pas à renvoyer les valeurs de K12 dans la cellule OBSERVATIONS correspondante.

Merci par avance si vous prenez le temps de me lire.
 

Pièces jointes

  • MonClasseur.xlsm
    38.1 KB · Affichages: 4
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour @r3vzone

Mettre un fichier c'est bien mais c'est mieux sans protection !!!
1670604492111.png


@Phil69970
 

r3vzone

XLDnaute Nouveau
Désolé si je me suis mal exprimé.

C'était juste une info sur le calculateur. Quand on fait un calcul en ajoutant des heures(ds le tableau en haut à gauche) le résultat total avec les codes correspondant s'affiche dans la cellule nommée RÉSULTAT (cellule K11 sur le calculateur) (et s'affiche également ds J32 (ligne et cellule masquée).
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Re

Peut on inscrire directement la réponse dans la feuille HS-Janvier-23 colonne S (Observation )
Dit autrement si tous les calculs se font en mémoire on pourrait peut être se passer de la feuille Calculateur ?
C'est un début de réflexion de ma part car je pense pouvoir me passer de cette feuille (calculateur)

@Phil69970
 

r3vzone

XLDnaute Nouveau
Disons que le calculateur permet de vérifier.
Oui en soit je suppose qu'on pourrait s'en passer, mais je t'avoue que dans l'immédiat je préférerais le garder (je débute comme expliqué au début de mon post et j'aimerais comprendre correctement toutes les étapes), là je l'ai lié avec des utilisateurs dans HS-JANVIER-23 pour mon utilisation mais d'autres personne pourraient être amenées a l'utiliser indépendamment de la feuille HS-Janvier-23 juste pr effectuer le calcul et avoir directement les codes sans la recherche.

Je suis tout de même très intéressé par le comment faire de ton idée :D

Quoiqu'il en soit merci pr le temps que tu prends.
 

r3vzone

XLDnaute Nouveau
Je peux te faire une explication du calcul mais à vrai dire il est indépendant de ma problématique (sauf si tu veux te lancer dans ton idée et faire le calcul sans le calculateur :) ) qui est de pouvoir copier ou écrire (les valeurs dans la cellule K11 ou J32 résultant du calcul partie de ton screenshot au-dessus) dans la correspondance de la cellule de l'agent sélectionné via la liste, cad dans la feuille HS-Janvier-23 colonne S (OBSERVATIONS).

Jte donne quand même les détails du dit calcul comme ça il y aura plus de clarté pour toi pour l'ensemble du moins j'espère :).

On reçois des feuilles d'heures sup avec des valeurs (heures).
Ces valeurs (heures) sont notés sur un mois au fil du temps.
Il y a 3 colonnes :
- Heures de jour
- Heures de nuit
- Heures de Dimanche/Jour Férié

Exemple:
L'agent fait 02h30 de jour (2.5) le 1er du mois.
Puis l'agent fait 01h00 de nuit (1) le 3.
L'agent fait 05h15 (5.25) le dimanche 5.
L'agent fait 01h45 de jour (1.75) le 15.
....

Particularités:
L'agent ne peut excéder 24h/mois.

Il y 6 codes pour 6 tranche horaires différentes :
- Heure de jour (-14h) [4.00 ROUGE]
- Heure de jour (+14h) [ VIDE VERT]
- Heure de Nuit (-14) [5.00 ROUGE]
- Heure de Nuit (+14) [2.00 VERT]
- Heure de Dimanche/JF (-14) [2.00 ROUGE]
- Heure de Dimanche/JF (+14) [1.00 VERT]
(Voir ton screenshot au-dessus pour les réf)

On calcul les 14eres heures (en les ajoutant au fil de la réalisation cad jour après jour - voir pdf en pj - c'est un juste exemple qui n'est pas celui ici ni dans mon fichier d'origine pour mieux comprendre) en gardant bien chaque code-tranche spécifique (dans le calcul des 14eres heures cela ne concernera donc que les codes-tranches (-14) puis une fois les 14eres atteintes, on calculera ce qui reste (cela ne concernera alors que les codes-tranches (+14)).


Voilà le calcul se fait ainsi, le résultat est mis (avec les codes-tranches) dans K11 ou J32 (masqué).
Et j'aimerais bien trouver un moyen de pouvoir copier ou écrire les valeurs dans la cellule K11 dans la correspondance de la cellule de l'agent sélectionné dans la feuille HS-Janvier-23 colonne S (OBSERVATIONS).

Merci dans tout les cas!
 

Pièces jointes

  • CamScanner 12-09-2022 19.38.pdf
    440.5 KB · Affichages: 3
Dernière édition:

r3vzone

XLDnaute Nouveau
Oui + le calcul aussi du coup (assez chronophage mais ça fait les pattes :) ) du coup jme suis lancé dans un 1er temps sur ce calculateur et ensuite jvais intégrer un récupérateur ocr - J'aurais juste a vérifier les fichiers dit non lisibles et le résultat final.
Je test et reviens pour te dire.

Sinon les valeurs sont dans quelles feuilles ?
Dans le fichier Camscanner
 
Dernière édition:

r3vzone

XLDnaute Nouveau
Ta macro fonctionne sur mon pc et je t'en remercie, malheureusement j'ai des restrictions sur les macro sur les pc du taff, c'est très embêtant car ça me restreint dans mes possibilitées c'est pour ça que j'ai fait mon calculateur sous forme de formules et non macro mais j'avoue ne pas du tout avoir pensé à l'indiquer dans le post et je m'en excuse sincèrement. Je débute et je pense que ça se voit ...
 
Dernière édition:

r3vzone

XLDnaute Nouveau
J'essaye via les formules mais c'est pas probant ...
Retranscrire la valeur d'une cellule dans une autre, y a pas de soucis mais la il s'agit de retranscrire la valeur d'une cellule dans une RECHERCHEV ou X (j'ai fait les formules avec X aussi) ou autre genre EQUIV.
 

r3vzone

XLDnaute Nouveau
Bon après différents essais il semblerait que les protections sur les macros ne concernent que les fichiers extérieurs :) du coup ...
Un enorme MERCI !! ça marche super bien, je suis en train de l'adapter pour les autres valeurs que je veux prendre en compte (ajout via la macro des TT Jours (calculateur) dans HS Normal HS-Janvier-23, TT Nuits .... jusqu'au mois HISTO.V et MOIS DE PAYE (j'ai rajouter mois HISTO.V et MOIS DE PAYE en K13 et K14 sur le calculateur) comme ça je passe uniquement par la feuille de calcul qui entre toutes mes valeurs en cliquant.

VB:
Sub CalculB()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim Derlig1&, Derlig2&

Set Ws1 = Sheets("HS-Janvier-23")
Set Ws2 = Sheets("Calculateur")

Derlig1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row

With Ws1
For i = 2 To Derlig1
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("S" & i) = "" Then .Range("S" & i) = Ws2.Range("J32").Value
End If
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("H" & i) = "" Then .Range("H" & i) = Ws2.Range("D26").Value
End If
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("I" & i) = "" Then .Range("I" & i) = Ws2.Range("F26").Value
End If
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("J" & i) = "" Then .Range("J" & i) = Ws2.Range("H26").Value
End If
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("O" & i) = "" Then .Range("O" & i) = Ws2.Range("K13").Value
End If
If .Range("B" & i) = Ws2.Range("K8") Then
If .Range("P" & i) = "" Then .Range("P" & i) = Ws2.Range("K14").Value
End If
Next i
End With

Set Ws1 = Nothing
Set Ws2 = Nothing
End Sub
Bon j'ai fait qu'un paste avec une adaptation bourrin mais je suppose qu'on peut mettre un genre de else if au lieu de répéter comme j'ai fait et en faisant des tests je me suis rendu compte que si la case observations de l'agent est vide il écrit dedans mais dans le cas où celle-ci est vide mais par exemple où dans les cases HS Normales ou HISTO.V dans HS-JANVIER-23 serait déjà remplie de valeurs (mais la case observations toujours vide [c'est ma cellule la plus importante parce que si elle est vide c'est que j'ai pas terminé le relevé/calcul], la macro ne réécrit pas sur ces données dans HS-JANVIER-23. Comment puis-je procéder pour qu'il réécrive par-dessus les données HS Normales(H), HS Nuit(I), HS DIM/JF(J), HISTO.V(O) et MOIS DE PAYE(P) en gardant bien entendu NE PAS REECRIRE sur S si pas vide?

Jvais poster le fichier modifié une fois terminé ;) pour ceux à qui ça pourrait servir!
 

Discussions similaires

Réponses
0
Affichages
141
Réponses
4
Affichages
186