Dupliquer des lignes dans un onglet différents

Pas de soucis pour les questions

Pour ce qui est de l'incrémentation, je pense qu'il serait plus simple de continuer l'incrémentation après ajout de la ligne? Non?

Cordialement

Ok. Mais si par exemple B10 a le numéro 6 et que vous complétez la ligne 20. Le numéro en B20 sera 7

Ok pour vous cela ?

Tout à fait Ok

Cordialement

Re

Le fichier en retour.

Juste une chose, je ne vois pas à quoi peuvent servir les 3 dernières macros dans le module 1. Pour le reste du chier j'ai refait une passe dessus

Faites un test pour voir si tout est ok

Cordialement

erreur lancement macro

Bonjour

Au lancement de la Macro

Cordialement

Bonjour,

Oui logique car vous devez d'abord avoir des numéros en colonne B et donc exécuter d'abord la macro Incrément

Sinon j'ai remarqué deux soucis :

- Dans la ligne où vous voyez .Cellls(17, 23) 'Senority Sr il y a un L de trop ... --> .Cells(17, 23) 'Senority Sr
- En dessous du code juste après lig = lig + 1, il faut rajouter la gestion d'erreur. Le code doit correspondre à ceci :

col = 0
On Error Resume Next
col = .Range("S" & lig & ":U" & lig).Find("x", LookIn:=xlValues, LookAt:=xlWhole).Column
On Error GoTo 0

en gros, c'est juste rajouter les deux lignes pour l'erreur éventuelle en cours de code

Pour éviter que l'erreur ne se produise aussi au départ si vous n'avez pas d'incrément en B18, mettez aussi les instructions On error resume next après With Sheets("Manpower Request") et On error goto 0 juste en dessous de la ligne col = .....

Bonjour,

J'ai fait les modifications du codes comme proposé.

La macro fonctionne, par contre pour la copie des séniorités, indépendamment des cases cochées dans l'onglet "Manpower Request", celui-ci me copie les deux valeurs

Cordialement

Re

Remplacez les deux lignes

Sheets("Manpower Request Agency").Range("F" & dlgMRA) = .Cells(17, 22) 'Senority Jr
Sheets("Manpower Request Agency").Range("G" & dlgMRA) = .Cells(17, 23) 'Senority Sr

par

If UCase(.Cells(lig, 22)) = "X" Then Sheets("Manpower Request Agency").Range("F" & dlgMRA) = .Cells(17, 22) 'Senority Jr
If UCase(.Cells(lig, 23)) = "X" Then Sheets("Manpower Request Agency").Range("G" & dlgMRA) = .Cells(17, 23) 'Senority Sr

Cordialement

Merci.

Je regarde et vous fait un retour rapidement.

Cordialement

Bonjour,

ça fonctionne correctement.

Juste deux petites choses, après je vous laisse tranquille!

1er point :

Comment je peux intégrer un tri automatique par le "Working Condition" sur les feuilles "manpower request GPS" & "manpower request GPS" après la copie des données.

2ème point :

Est-il possible de créer un bouton "Reset" qui effacerait les données rentrées dans La "Manpower Request"?

En tout cas, je vous remercie fortement pour votre contribution.

Bien cordialement

Bonjour

1er point :

Comment je peux intégrer un tri automatique par le "Working Condition" sur les feuilles "manpower request GPS" & "manpower request GPS" après la copie des données.

C'est possible on peut exécuter un code, mais pourquoi cette question car en exécutant actuellement il me semble que tout est déjà trié sur le Working condition. Dites quels sont les critères de tri que vous voulez

2ème point :

Est-il possible de créer un bouton "Reset" qui effacerait les données rentrées dans La "Manpower Request"?

Oui aussi. Que doit-t-on supprimer dans cette feuille ? De la colonne A à W ??

Re

1er Point :

J'aimerais que les valeurs soient triées par la colonne "Working Condition". Aujourd'hui, comme dans l'image ci-dessous celles-ci ne sont pas triées. J'ai Onshore 2x, puis Offshore 3x, de nouveau Onshore 3x; etc...

J'aimerai que tout les Onshore soit groupés ensemble, que tous les offshore et site également

tri

2ème point :

J'aimerais que les colonnes A/B/C & N à W soit vidées.

Je souhaiterais également que les lignes dupliquées (voir image ci-dessous) soient supprimées.

mise a zero

Cordialement

Re,

1er Point :

J'aimerais que les valeurs soient triées par la colonne "Working Condition". Aujourd'hui, comme dans l'image ci-dessous celles-ci ne sont pas triées. J'ai Onshore 2x, puis Offshore 3x, de nouveau Onshore 3x; etc...

J'aimerai que tout les Onshore soit groupés ensemble, que tous les offshore et site également

Pour ce point faites ceci :

- A la fin de la macro Copie, juste avant le END SUB, mettez cette instruction -> CALL TRI
- Dans un module séparé ou en dessous de la macro Copie, mettez ce code

Sub Tri()
Dim ws()
Dim i As Byte, colwkc As Byte
Dim plage As Range

ws = Array(Worksheets("Manpower Request GPS"), Worksheets("Manpower Request Agency"))

For i = 0 To 1

    With Worksheets(ws(i).Name)
        .Select
        dlg = .Range("B" & .Rows.Count).End(xlUp).Row
        If i = 0 Then
            colwkc = 6: Set plage = .Range("B3:K" & dlg)
        Else: colwkc = 5: Set plage = .Range("B3:L" & dlg)
        End If

        With .Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range(Cells(4, colwkc), Cells(dlg, colwkc)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange plage
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    End With

Next i
End Sub

Faite un test. Je reviens plus tard sur le point 2

Crdlt


Re

Impeccablement bien.

Le tri fonctionne

Cordialement

Bonjour

2ème point :

J'aimerais que les colonnes A/B/C & N à W soit vidées.
Je souhaiterais également que les lignes dupliquées (voir image ci-dessous) soient supprimées.

Essayez avec ce code à placer dans un module. Faites un test pour voir si pas de soucis.

Sub Reset()
Dim dlg As Integer
Dim ws As Worksheet

Set ws = Worksheets("Manpower Request")

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With

With ws
    If .AutoFilterMode = False Then
        .Range("A17:AR17").AutoFilter
    End If
    dlg = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    .Range("A18:C" & dlg).ClearContents
    .Range("N18:W" & dlg).ClearContents
    With .Range("G18:G" & dlg)
            .AutoFilter 7, "=*Ligne dupliquée*"
            .SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    .ShowAllData 'Pour effacer le filtre
End With

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With
End Sub

Note : J'ai dans votre fichier un code pour afficher les lignes. Si vous l'utilisez toujours il me semble que vous pourriez modifier. Quel était l'utilité de ce code ?

Cordialement

Bonjour

J'essaie la dernière macro, et je vous tiens au courant.

J'ai un petit soucis avec le code, celui-ci fonctionne bien, par contre quand la cellule B18 ou C18 est vide, la macro ne fonctionne pas. Il faut toujours que je mette une valeur pour que le code fonctionne correctement.

la Macro pour afficher les lignes comme pour les cacher, est juste pour une question de lisibilité du tableau. Si elle est modifiable pourquoi pas

Cordialement

Bonjour

J'essaie la dernière macro, et je vous tiens au courant.

J'ai un petit soucis avec le code, celui-ci fonctionne bien, par contre quand la cellule B18 ou C18 est vide, la macro ne fonctionne pas. Il faut toujours que je mette une valeur pour que le code fonctionne correctement.

la Macro pour afficher les lignes comme pour les cacher, est juste pour une question de lisibilité du tableau. Si elle est modifiable pourquoi pas

Cordialement

vous parlez de la macro Reset ?? Si oui, je vois peut être quelques lignes à inverser comme ceci

    With .Range("G18:G" & dlg)
            .AutoFilter 7, "=*Ligne dupliquée*"
            .SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    .ShowAllData 'Pour effacer le filtre
    .Range("A18:C" & dlg).ClearContents
    .Range("N18:W" & dlg).ClearContents

Dans cette manière de faire la variable "dlg" ne sera plus exacte lors de la suppression des données en colonnes A à C et N à W mais ce n'est pas très important.

Bonsoir

Non je parlait de la macro copie

Cordialement

Bonjour

Pour le souci de la macro Copie, avec vous fait ce dont je parlais dans mon poste de mercredi (10h23) ?

Pour éviter que l'erreur ne se produise aussi au départ si vous n'avez pas d'incrément en B18, mettez aussi les instructions On error resume next après With Sheets("Manpower Request") et On error goto 0 juste en dessous de la ligne col = .....

Cordialement

Rechercher des sujets similaires à "dupliquer lignes onglet differents"