Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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.



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




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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…