Microsoft 365 Index Equiv vba ?

gillmo

XLDnaute Occasionnel
bonjour,

J'ai un fichier dans lequel j'ai une liste de salarié avec leur affectation, et je souhaite dans un autre onglet, indiqué 100% dans l'affectation correspondante si le salarié a une affectation ou vide s'il n'a pas d'affectation.

J'ai commencé un code via ce que j'ai pu trouvé sur les différents forums, mais bien évidemment si je suis là c'est que ce n'est pas concluant. Entre temps, j'ai tenté différents codes, mais cela ne fonctionne pas alors je remets

VB:
Sub test()
Dim J As Long
Dim I As Long

For I = 5 To 11
For J = 5 To 9

a = Application.Match(Cells(I, 1), Feuil1.Range("A5:A600"), 0)
b = Application.Match(Cells(4, J), Feuil1.Range("H5:H600"), 0)

Cells(I, J) = Application.Index(Feuil1.Range("H5:H532"), a, b, 0)


Next
Next

End Sub


Merci pour votre aide
 

Pièces jointes

  • repartition.xlsm
    16.1 KB · Affichages: 11

chris

XLDnaute Barbatruc
Bonjour
Pourquoi s'enquiquiner avec du VBA, bossant inutilement sur 600 lignes alors que des tableaux structurés et des formules suffisent

A noter que le tableau 2 complet pourrait être généré automatiquement par une requête simple PowerQyery (intégré à Excel)
 

Pièces jointes

  • repartition_formules.xlsx
    14.9 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gillmo,
Pas tout compris, mais une tentative en PJ.
On cherche le salarié en feuil2, son affectation en feuill1, la place de l'affectation en feuil2 et on met un X pour le salarié à la bonne affectation.
VB:
Sub test()
    Dim I%, DL%, Nom%, Affectation%
    DL = Sheets("Feuil1").Range("A65500").End(xlUp).Row 'Dernière ligne
    For I = 5 To DL
        Nom = Application.Match(Cells(I, "A"), Feuil2.Range("A:A"), 0)              ' Place du Nom
        If Cells(I, "H") <> "" Then
            Affectation = Application.Match(Cells(I, "H"), Feuil2.Range("3:3"), 0)  ' Place de l'affectation
            Feuil2.Cells(Nom, Affectation) = "X"                                    ' Une croix à intersection Nom Affectation
        End If
    Next I
End Sub
 

Pièces jointes

  • repartition.xlsm
    18.3 KB · Affichages: 6

gillmo

XLDnaute Occasionnel
Bonjour Chris et Sylvanu,

Chris, je n'ai donné qu'une partie de la liste, mais j'ai plus de 500 salariés, et plus de 30 affectations possible. De plus derrière tout cela, j'aurai des calculs de masse salariale selon des règles de gestions, et je veux éviter d'alourdir le fichier par des formules, si je peux faire autrement.
Depuis quelque temps j'ai découvert power query, et même si j'y ai pensé pour mon problème, je n'ai pas vu comment je pouvais l'utiliser et l'automatiser.

Sylvanu, oui tu as bien compris ma demande, même si celle ci n'était pas aussi clair que je le pensais. Par contre, à la place des X, je vais mettre 100%.

Merci à tous les deux d'avoir consacré du temps.
 

gillmo

XLDnaute Occasionnel
Merci Sylvanu, le code paraît simple, mais j'étais bloqué dans la méthode. Peux tu me dire à quoi correspond le "H" dans la dernière ligne (j'imagine le numéro de la colonne H mais je me trompe peut être) et le c n'est pas utilisé dans la suite du code, et pourtant il doit servir.
 

Discussions similaires

Réponses
11
Affichages
284

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 005
dernier inscrit
gilles.hery