XL 2016 répéter une formule via VBA dans lignes et colonnes

Fredjo999

XLDnaute Nouveau
Bonjour à tous,

Je découvre VBA et je suis déjà bloqué pour quelque chose qui doit être relativement simple pourtant :oops:

Je voudrais recopier dans mon planning un VLOOKUP dans chaque journée, comme je l'ai fait relativement simplement sur un colonne et pour chaque personne.

Je pourrais copier autant de commandes WHILE que j'ai de colonnes mais ce n'est pas très propre et je suis certain qu'il doit y avoir un autre moyen.

upload_2018-6-4_16-46-26.png


Voici mon code :

Code:
Sub fill_codes()
'
' fill_codes Macro
'
'
   
  i = 8
  While Not Range("a" & i) = ""
  Range("f" & i) = "=VLOOKUP(F$6,absences!$B:$C,2,FALSE)"
  i = i + 2
  Wend
 
  i = 8
  While Not Range("a" & i) = ""
  Range("g" & i) = "=VLOOKUP(g$6,absences!$B:$C,2,FALSE)"
  i = i + 2
  Wend
 
  i = 8
  While Not Range("a" & i) = ""
  Range("j" & i) = "=VLOOKUP(J$6,absences!$B:$C,2,FALSE)"
  i = i + 2
  Wend
   
End Sub

J'avais tenté un truc dans ce style mais o_O:rolleyes:

upload_2018-6-4_16-51-2.png



Merci d'avance pour vos propositions.
Si ma manière de faire ma boucle n'est pas "top" n'hésitez pas non plus à m'aiguiller.

Bonne soirée à tous,

Fred ;)
 

Pièces jointes

  • planning.xlsm
    100.4 KB · Affichages: 35

Lone-wolf

XLDnaute Barbatruc
Bonjour Fred

Ton planning est mal conçu. Les dates ne sont pas des dates valides et toutes ces listes sont inutiles puisque tu fais une recherche.
Dans la feuille absences, au lieu de mettre des numéros en colonne A, moi je mettrais les noms.
Il y a aussi cette formule : =SI(ET($B$3<>"";$B$4<>"");TEXTE(F6;"jjj") & " " & TEXTE(F6;"jj");""). La concatenation est inutile.
=SI(ET($B$3<>"";$B$4<>"");TEXTE(F6;"jjj jj");"")
 

Fredjo999

XLDnaute Nouveau
Bonjour Fred

Ton planning est mal conçu.

Merci déjà pour ta réponse ;)

Les dates ne sont pas des dates valides et toutes ces listes sont inutiles puisque tu fais une recherche.

Je ne comprends pas ta remarque. Mais à noter que la row 6 est normalement masquée de l'utilisateur, la row 7 me permet un affichage de colonne plus étroit afin d'avoir toutes les dates à l'écran. Mon contrôle se fait sur la row 6.


Dans la feuille absences, au lieu de mettre des numéros en colonne A, moi je mettrais les noms.

Le numéro permet à l'utilisateur de voir si on est bien corrects sur l'année (normalement 22 jours de fermetures prévus).
Qu'est-ce que cela changerait de mettre les noms en colonne A ?

Il y a aussi cette formule : =SI(ET($B$3<>"";$B$4<>"");TEXTE(F6;"jjj") & " " & TEXTE(F6;"jj");""). La concatenation est inutile.
=SI(ET($B$3<>"";$B$4<>"");TEXTE(F6;"jjj jj");"")

Merci pour ceci je vais tester.

Cela dit, tu ne réponds pas à ma question qui était à la base de pouvoir répéter une formule via une macro dans toutes les colonnes désirées et toutes les lignes ;)
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Fred

Moi:
Les dates ne sont pas des dates valides et toutes ces listes sont inutiles puisque tu fais une recherche.

Toi:
Je ne comprends pas ta remarque.


Regarde le classeur exemple et dis-moi si tu vois une différence.

Et pour les formules, la recherchev n'est pas correcte. Il faut te baser d'après l'employé et non sur la date.
Ce n'est pas la date qui est en congé ou en maladie, mais l'employé.
Ensuite tu as la 2ème formule en dessous et c'est pour ça que tu as toutes ces erreurs.
 

Pièces jointes

  • Classeur1.xlsm
    99.5 KB · Affichages: 19
Dernière édition:

Discussions similaires

Réponses
14
Affichages
621

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T