Récupéré donnée en fonction d'une liste de nom

Bonjour,

Pourriez-vous m'aider à réaliser mon projet en code VBA
Je vous explique une des taches de m'a fonction est de réalisé le planning des employés, pour se faire j'avais commencé un fichier qui comporte 3 feuilles qui ce nome (Janvier, planning et liste agents)

1) j'aimerai que lorsque je clique sur le bouton de la macro qui ce nome (Reconstruction liste Nom et N° GSM) que les nom qui se trouve sur les cellules des colonnes de A à D sois copier sur les cellules des colonnes de F à I mais les nom et numéro des employés doivent êtres retranscrit comme sur la photos ci-joint

les numéros à récupérer se trouve sur la feuilles liste agents

2) J'aimerai aussi que lorsque je clique sur le bouton de macro (Transfert vers planning) les nom et numéro qui se trouve sur les cellules des colonnes
de F à G soit copier sur la feuille planning à partir des cellules E16 jusqu'à H31
Nom et numéro de la Colonne H vers H11 à H14 de la feuille planning
Nom et numéro de la Colonne I vers H3 à H8 de la feuille planning
planning2

Ps : je vous joint le fichier.

Je vous remercie d'avance pour vôtres aides.

Bonjour à tous !

Et....

La charte du forum (voir ici) précise :

image

Bonjour,

Un test, même si je ne suis pas satisfait due mon code du second point ..

Oups Edit suite au message de JFL, je n'ai pas été voir sur les autres forums ..

Ergotamine

Bonjour JFL et les membres de ce forum

Je suis vraiment désolé d'avoir enfreint la règle du doublon sur un autre forum, même cela n'excuse pas mon ignorance mais je ne savais pas qu'il était interdit, après réflexion cela va de soit désolé encore je ferai plus attention à l'avenir.

Je fais mon mea-culpa.

Ps: j'ai essayé de cherché l'option afin de supprimé ma question sur l'autre forum, mais je ne le trouve pas.

Bien à vous.

Bonjour,

Il est vrai que le crossposting est une question d'éthique et de respect envers ceux qui s'intéressent à résoudre les problématique. Un copier coller est plus rapide sur X forums, ceux qui résolvent, eux, ne peuvent pas le faire. Pour ma part j'ai mis plus de 30 minutes pour faire mes tests. Donc tous ceux qui tentent comme moi ne résolvent pas d'autres problématiques en parallèle. C'est un peu comme ceux qui saturent les secours en les appelant des centaines de fois (bon je ne sais pas si la comparaison est la bonne ..)

Ceci dit, comme tu en as pris conscience et que tous les autres points ont été cochés (explication, fichier représentatif joint), voici mon bout de code que j'avais laissé de côté en attendant que la réponse :

Sub RECOPIE()
Dim LR%
With Worksheets("Janvier")
    For C = 1 To 4
        T_EMP = .Range(.Cells(2, C), .Cells(.Cells(.Rows.Count, C).End(xlUp).Row, C))
        For i = 1 To UBound(T_EMP)
            .Cells(i, C).Offset(i, 5) = T_EMP(i, 1)
        Next i
    Next C
End With
End Sub

Sub TRANS()
Dim LR%
With Worksheets("Janvier")
    LR = WorksheetFunction.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
    .Range(.Cells(2, 6), .Cells(LR, 7)).Copy
    Worksheets("Planning").Range("E16").PasteSpecial Paste:=xlPasteValues
    .Range(.Cells(2, 8), .Cells(.Cells(.Rows.Count, 8).End(xlUp).Row, 8)).Copy
    Worksheets("Planning").Range("H11").PasteSpecial Paste:=xlPasteValues
    .Range(.Cells(2, 9), .Cells(.Cells(.Rows.Count, 9).End(xlUp).Row, 9)).Copy
    Worksheets("Planning").Range("H3").PasteSpecial Paste:=xlPasteValues
End With
End Sub

Ca me parraît fonctionnel.

Bonne fin de WE.

Ergotamine

Bonjour Ergotamine,

Merci pour t'on aide et t'on indulgence

Tes lignes de code fonctionne, le seule souci c'est qu'il n'inscrit pas les numéros en dessous des noms des colonnes de F à I c'est numéro doivent êtres repris de la feuilles qui ce nome liste agents.

Exemple: en dessous de Peeters il devrait avoir inscrit 41284 qu'il aurait été récupéré de la feuilles liste agents ainsi de suite pour les autres noms qui se trouve dans les colonnes de F à I

1

Je ne sais pas si j'ai réussi a me faire comprendre, si ce n'est pas le cas dis le moi et j'essayerai de faire un plus gros effort de compréhension.

Merci encore.

Bonjour,

Je ne comprend pas trop le besoin du VBA, on aurait pu le faire par formule, m'enfin :

Sub RECOPIE()
Dim LR%, T_EMP(), i As Byte, C As Byte
With Worksheets("Janvier")
    For C = 1 To 4
        ReDim T_EMP(.Cells(.Rows.Count, C).End(xlUp).Row, 1)
        For i = 0 To UBound(T_EMP)
            T_EMP(i, 0) = .Cells(i + 2, C)
            T_EMP(i, 1) = Worksheets("Liste Agents").UsedRange.Find(What:=T_EMP(i, 0)).Offset(1)
        Next i
        For i = 0 To UBound(T_EMP)
            .Cells(i + 1, C).Offset(i + 1, 5) = T_EMP(i, 0)
            .Cells(i + 2, C).Offset(i + 1, 5) = T_EMP(i, 1)
        Next i
    Next C
End With
End Sub

Ergotamine

Super Ergotamine

J'ai plus qu'un soucis lorsque j'ai plus 8 nom sur la colonne A ou F (service 1) et que je clique pour le transféré sur la feuilles planning alors j'ai cette ligne VBA qui apparait vu qu'il ne peut dépassé le nombre de 8 sur la feuilles planning de la colonnes E à H

capture3

Est-il possible que ce qui a comme nom et numéro des colonnes F à G de la feuilles Janvier même si je dépasse le nombre de 8 soit tous retranscrit sur les cellules de la feuilles planning E16 à H31 par ordre de nom qui est sur la feuille Janvier (exemple les cellules en colorie qui est sur la photo ci-joint)

capture4 capture5

Merci encore je suis presque au bout grâce à toi.

Je joint une copie du fichier ou vous pouvez vous apercevoir que j'ai 13 noms sur la colonne F et 12 noms sur la colonne G et lorsque je le transfert vers planning il ne veux pas mais si j'ai moins ou égale à 8 noms aussi bien sur la colonne F et G il fonctionne.

Bonsoir,

Je ne sais pas si c'est la façon la plus optimisée mais ne voulant pas passer par des copier/coller multiples :

Sub TRANS()
Dim LR%, T_EMP As Variant, C As Byte, L As Byte, D As Byte, L_T As Byte
With Worksheets("Janvier")
    T_EMP = Array(Application.Transpose(.Range("F2:F33")), Application.Transpose(.Range("G2:G33")))
    T_EMP = Application.Transpose(T_EMP)
    T_EMP = Application.Transpose(T_EMP)
    C = 5
    L = 16
    For D = 1 To 2
        For L_T = 1 To UBound(T_EMP, 2)
                If T_EMP(D, L_T) <> "" Then
                    Worksheets("Planning").Cells(L, C) = T_EMP(D, L_T)
                    L = L + 1
                    If L > 31 Then
                        C = C + 1
                        L = 16
                    End If
                End If
        Next L_T
    Next D
    .Range(.Cells(2, 8), .Cells(.Cells(.Rows.Count, 8).End(xlUp).Row, 8)).Copy
    Worksheets("Planning").Range("H11").PasteSpecial Paste:=xlPasteValues
    .Range(.Cells(2, 9), .Cells(.Cells(.Rows.Count, 9).End(xlUp).Row, 9)).Copy
    Worksheets("Planning").Range("H3").PasteSpecial Paste:=xlPasteValues
End With
End Sub

Ergotamine

Merci Ergotamine tu as été super sur ce projet, maintenant grâce à t'on aide je vais continué le fichier en espérant ne pas bloqué.

Bonjour Ergotamine,

Je me suis rendu compte que lorsque je dépasse 18 noms dans les colonnes A & B et que je clique sur le bouton (reconstruction liste nom et n° GSM) ils sont bien retranscrit dans les colonnes F & G quitte à dépasser le tableau (ce qui n’est pas grave en soit) mais lorsque je clique sur le bouton (transfert vers planning) il me transfert bien sur la feuille planning dans les cellules demandé mais pas les noms et n° GSM qui ont dépassé le nombre de 32 sur les colonnes F & G de la feuille janvier.

Merci d’avance pour vôtres aides.

Bonjour,

A tester :

Sub TRANS()
Dim LR%, T_EMP As Variant, C As Byte, L As Byte, D As Byte, L_T As Byte
With Worksheets("Janvier")
    LR = WorksheetFunction.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
    T_EMP = Array(Application.Transpose(.Range("F2:F" & LR)), Application.Transpose(.Range("G2:G" & LR)))
    T_EMP = Application.Transpose(T_EMP)
    T_EMP = Application.Transpose(T_EMP)
    C = 5
    L = 16
    For D = 1 To 2
        For L_T = 1 To UBound(T_EMP, 2)
                If T_EMP(D, L_T) <> "" Then
                    Worksheets("Planning").Cells(L, C) = T_EMP(D, L_T)
                    L = L + 1
                    If L > 31 Then
                        C = C + 1
                        L = 16
                    End If
                End If
        Next L_T
    Next D
    .Range(.Cells(2, 8), .Cells(.Cells(.Rows.Count, 8).End(xlUp).Row, 8)).Copy
    Worksheets("Planning").Range("H11").PasteSpecial Paste:=xlPasteValues
    .Range(.Cells(2, 9), .Cells(.Cells(.Rows.Count, 9).End(xlUp).Row, 9)).Copy
    Worksheets("Planning").Range("H3").PasteSpecial Paste:=xlPasteValues
End With
End Sub

Ergotamine

Super Ergotamine

Bonjour,

J'ai essayé de modifié les code VBA par rapport au colonnes que j'ai rajouté dans la feuille janvier mais j'ai du mal à comprendre la subtilité, c'est pour cela que j'aurai de nouveau besoin de votre aide.

je m'explique J'ai rajouté une colonne E nommé Test et une autre colonne K nommé Test liaison dans la feuille Janvier

Dans le même principe que les autres colonnes j'aimerai que ce qui ce trouve dans la colonne E soit recopié dans la colonne K avec le numéro et lorsque je clique sur la macro transfert planning les noms et numéro soit copié dans la feuille planning à partir de la cellule F3

Merci d'avance.

Bonjour,

Désolé de relancé le sujet.

Pourriez-vous m'apporter votre aide je suis presque au bout du projet et cela grâce a vous.

Voila dans le même principe que les autres colonnes j'aimerai que ce qui se trouve dans la colonne E soit recopié dans la colonne K avec le numéro et lorsque je clique sur la macro transfert planning les noms et numéro soit copié dans la feuille planning à partir de la cellule F3 à G13 comme sur la photo ci-dessous les cellules en vert

Merci d'avance

capture

Bonjour,

A tester :

Sub TRANS()
Dim LR%, T_EMP As Variant, C As Byte, L As Byte, D As Byte, L_T As Byte
With Worksheets("Janvier")
    LR = WorksheetFunction.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
    T_EMP = Array(Application.Transpose(.Range("F2:F" & LR)), Application.Transpose(.Range("G2:G" & LR)))
    T_EMP = Application.Transpose(T_EMP)
    T_EMP = Application.Transpose(T_EMP)
    C = 5
    L = 16
    For D = 1 To 2
        For L_T = 1 To UBound(T_EMP, 2)
                If T_EMP(D, L_T) <> "" Then
                    Worksheets("Planning").Cells(L, C) = T_EMP(D, L_T)
                    L = L + 1
                    If L > 31 Then
                        C = C + 1
                        L = 16
                    End If
                End If
        Next L_T
    Next D
    .Range(.Cells(2, 8), .Cells(.Cells(.Rows.Count, 8).End(xlUp).Row, 8)).Copy
    Worksheets("Planning").Range("G3").PasteSpecial Paste:=xlPasteValues
    .Range(.Cells(2, 9), .Cells(.Cells(.Rows.Count, 9).End(xlUp).Row, 9)).Copy
    Worksheets("Planning").Range("H3").PasteSpecial Paste:=xlPasteValues
    LR = .Cells(.Rows.Count, 11).End(xlUp).Row
    If LR > 13 Then
        Worksheets("Planning").Range("F3:F14").Value = .Range(.Cells(2, 11), .Cells(13, 11)).Value
        Worksheets("Planning").Range("G3:G" & LR - 11).Value = .Range(.Cells(14, 11), .Cells(LR, 11)).Value
        Else
        Worksheets("Planning").Range("F3:F14").Value = .Range(.Cells(2, 11), .Cells(13, 11)).Value
    End If
End With
End Sub

Ergotamine

Bonjour Ergotamine,

Malheureusement lors de l'exécution j'ai une erreur de script.

capture1

Bonjour,

J'ai trouvé l'erreur ainsi que d'autres script qui était en erreur à cause des modification que j'avais apporté au fichier

Pour le transfert c'était H11 Row, 9 à la place de G3 Row, 8

Pour la macro copie j'y ai aussi modifié quelques scripts afin qu'ils correspondent à mes nouvelles colonnes

Merci encore pour t'on aide

Rechercher des sujets similaires à "recupere donnee fonction liste nom"