Changement de Zone Automatique

Hello,

Je suis en souffrance , j’essayer de réaliser ceci :

Dans l’onglet « Liste » dans la plage A24 :D40 les indications des shift et des zones

Colonne A : le Shift « Jour ou Nuit »
Colonne B : La Zone
Colonne C : Le start avec le N° de ligne du début de cette Zone
Colonne D : Le End avec le N° de ligne du fin de cette Zone

Dans l’onglet « Janvier-décembre »

Colonne B ont va retrouve les noms des Zones et les noms des collaborateurs.

J’ai besoin quand je double click sur une cellule dans la colonne B qu’il me demande le Shift et la Zone que je souhaite.

Il copie toute la ligne.
Il cherche le nouveaux shift et la nouvelle Zone grâce a l’onglet « Liste »

Il cherche la premier ligne vide dans cette plage visible grâce a l’onglet « Liste » et colle sur la premier ligne vide.

Il sélectionne toute les plages de la zone trouve grâce a l’onglet « Liste » et tri de A-Z.

Il repart ou le double click dans la colonne B a était fait et place dans la cellule la valeur « ZZ »

Il sélectionne la plage de cette zone trouver grâce a l’onglet « Liste » selectionne toute les lignes de cette plage et effectuer en Tri de A-Z.

Il cherche la premier ligne vide de cette plage
Il copier la premier ligne vide et colle sur la dernier ligne avec une valeur

Il place bien le « ZZ » dans la zone source mais j’arrive pas a ce qu’il tri pour avoir cette ligne « ZZ » en dernier et copier la ligne en dessous forcement vide sur celle ci.

et dans la nouvelle zone il place bien a la fin mais il fait le copier coller dans la nouvelle zone et pas dans la zone source :hot_face:

Changement de Zone.xlsm (200,7 Ko)

1 « J'aime »

Bonjour Johnny
J’avoue m’arracher les cheveux pour te suivre sur le déroulement de cette procédure et notamment sur ce qui coince te concernant :

« et dans la nouvelle zone il place bien a la fin mais il fait le copier coller dans la nouvelle zone et pas dans la zone source »

Je me hasarde à te proposer ce correctif sans grande conviction car pas certain du tout d’avoir compris
Et de surcroit ne pas comprendre le but à atteindre avec
Il faudrait nous en dire plus le concernant afin de mieux cerner l’objectif recherché

Testes déjà et dis moi

Changement de Zone.xlsm (197,9 Ko)

Hello FFO,

Merci infiniment pour ton retour. En toute transparence, étant donné que nous avons passé beaucoup de temps sur ce fichier, j’avais plus qu’espoir que tu prennes la main. Malgré que ceux projet ta deja valu quelque cheveux en moin :slight_smile:

Avec les orientations informatiques que nous devions prendre, j’avais laissé de côté l’optimisation, mais je crains que le nombre de détails que nous avons mis en place ne permette pas vraiment de prendre une autre direction.

Visiblement sur le marché, il y a pas de logiciels adaptés à nos besoins ou très coûteux. J’ai changé le fusil d’épaule et décidé de ne plus attendre pour continuer à automatiser les tâches.

Je te présente @Bapt11 ; je vais lui confier le projet et le suivre de très près, bien sûr.

Il travaille avec moi depuis moins d’un an. Je l’ai un peu chargé avec la transmission des connaissances Excel et je vais l’accompagner car il reprend la plupart de mes tâches. Il a beaucoup de visibilité maintenant car il travaille dessus tout les jours du fichier Organisation.

Oui, pardon, avec un triage A-Z, il n’était pas très malin de mettre des chiffres.

L’idée est qu’en cas de changement de zone ou d’équipe, il puisse faire les actions qu’on doit réaliser manuellement car nous ne pouvons pas supprimer ou insérer de lignes.

Nous devons faire avec les lignes disponibles.

Par exemple, je double-clique sur « B25 »,valeur « J » il me demande le Shift et la zone.

Je choisis « Jour » et « Arrivage », il doit copier la ligne 25, trouver la première ligne vide dans la zone choisie, sélectionner la zone, la plage sont note dans l’onglet « Liste » et effectuer le tri.

Seulement, s’il n’est plus en Zone 1, il faut qu’on puisse le retirer, pour cela je suis partie a mettre à la place les deux « ZZ », cela permet avec le tri d’avoir la ligne en dernier.
Les lignes en dessous sont forcément vides, il faudrait qu’il puisse copier cette ligne vide et la coller sur la dernière ligne avec valeur, cela permettrait d’effacer le collaborateur de son ancienne zone sans suppression de ligne.

Tu voie l’idée ? les ZZ sont l’ancienne Zone et nous devont l’enlevé si nous aurions un doublons et cela impactera le calcule de la production

Merci FFO un plaisir de collabore de nouveaux je te souhaite une trés belle journée :slight_smile:

Bonjour
As tu dabord testé ma proposition ?

Je ne comprends pas l’objectif de copier une ligne sur la première ligne vide d’une plage définie et de supprimer celle copiée
Quel intérêt ???
Pourquoi ne pas la concerver le résultat est identique
Je copie la ligne 25 sur la première ligne vide de la Zone1 puis la supprime trie la Zone1 reste strictement identique
Comprends pas !!!
Merci de m’éclairer

Oui, et je pense qu’on s’approche.

Car nous ne pouvons pas supprimer ou insérer directement la ligne, sinon la mise en place des autres codes serait compromise.

Nous devons trouver un moyen de pouvoir retirer les collaborateurs de leur ancienne zone.

Pour cela, si nous plaçons, une fois qu’il est parti dans sa nouvelle zone, « ZZ » dans son ancienne, grâce au tri, cette ligne ira à la fin de la zone. Pourquoi cette action ? Parce qu’en dessous, il y aura forcément des lignes vides.

Si on fait un copier d’une ligne vide et qu’on colle sur la ligne où nous avons placé les « ZZ », nous aurons retiré les collaborateurs de leur ancienne zone sans supprimer de ligne et la zone sera classée de nouveau par ordre alphabétique.

cela t’apporte une meiheure visibilté sur l’objectif ?

« Pour cela, si nous plaçons, une fois qu’il est parti dans sa nouvelle zone, « ZZ » dans son ancienne, grâce au tri, cette ligne ira à la fin de la zone. Pourquoi cette action ? Parce qu’en dessous, il y aura forcément des lignes vides. »

Attention dans le code de ton traitement une seule zone est concerné par le tri et non deux zones
La plage de celle-ci est déterminée par l’onglet liste en fonction des saisies réalisées en début de traitement (Shift et Zone)
Les deux tris qui s’en suivent utilisent cette seule et même plage ainsi déterminée
Il est aucunement question d’une ancienne plage à prendre en compte
Si le doubleclick est dans la plage définie sa ligne fait parti de celles triées sinon elle ne l’est pas
Mais dans cette alternatif à quoi bon la dupliquer puis la supprimer autant la conserver
Il y a quelque chose à revoir dans cette approche car cela ne tient pas debout selon moi
A étudier donc

Bonjour FFO,
C’est un plaisir de rentrer dans la boucle pour ce projet !

Pour expliquer avec une autre approche,

Pour ce qui est du début du projet, le chemin est top, et fonctionnel dans le cas ou nous avons une seul zone sur l’exemple (à voir pour étendre la macro à tout le fichier, pour que nous pussions nous en servir sur chaque zone bien defini)

Pour la suite en se qui concerne les « ZZ », nous les plaçons dans la cellule pour procéder un trie que fait descendre la ligne en bas de la zone. Pour par la suite copier la ligne vide qui se trouve en dessous et la coller sur celle ci.
Pourquoi nous faisons ça ? le fichier est monter d’une telle sorte qui nous ne pouvons pas supprimer ni insérer de nouvelle ligne, ce qui decalerrai tout le fichier).

L’idée est donc :

Une fois la ligne transférer dans la nouvelle zone avec le bon shift, que dans la cellule B de l’acienne ligne soit inscrit les « ZZ » , que la plage soit triée de a-z pui qu’une ligne vide qui est en dessous soit collé dessus.

En copie collant nous gardons toutes les formule qui se trouve sur les vides qui sont déjà pressente

Je ne sais pas si c’est plus claire comme ça pour toi ?

Bonjour
C’est bien ce que j’avais compris mais là où il y a un hic dans cette approche c’est que la ligne de la cellule du doubleclick où est inclus le ZZ n’est pas obligatoirement dans la plage déterminée par l’onglet liste en fonction des saisies réalisées en début de traitement (Shift et Zone)
Exemple doubleclick en cellule « B25 » donc ZZ en « B25 » soit la ligne 25 en colonne B et la plage dans une zone comme déterminée ci-dessus pour laquelle cette ligne ne fait partie
Le tri de cette plage dans cette configuration en aucun cas ne permettra à la ligne 25 du ZZ de ce mettre en fin de celle-ci
Seule condition à cette fin que cette ligne fasse partie de la plage triée pas d’autre choix

Il faut ré-étudier ce fonctionnement et se poser la question de son bien fondé car dupliquer une ligne d’une plage pour la supprimer ensuite quel intérêt ?

J’avoue ma très grande perplexité

Salut FFO,

Pardon pour tout ce temps d’attente je suis parti en vacances, me voila revenu pour reprendre le sujet.

Je pense comprendre tom point de vu,

Donc l’idée de faire passer la ligne concerné en bas de la plage par un tri pour ensuite copier coller une ligne vide dessus n’a pas forcement sens pour toi.

Faudrait trouver une autre façon de voir la chose alors

Sachant que l’on peux donc ni supprimer ni ajouter de ligne sur le fichier

Dans l’idée on pourrais juste faire en sorte que la ligne s’efface et avec un trie repasse en bas cependant en faisant ça nous effaceront aussi les formules qui sont implanter sur chaque ligne, même les vides. C’est pour éviter cela que nous copions colons à chaque fois une ligne vide sur l’ancienne. Je ne sais pas si je me suis bien fait comprendre

bonjour tout le monde.
Comme ceci ?

Option Compare Text
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Dim cSource As Range, cDestination As Range, cCell As Range, aA, i

     If Target.Column <> 2 Then Exit Sub     'Seulement pour un double-click dans la colonne B

     'Demande d'entrée pour le shift et la zone
     Dim ShiftValue As String: ShiftValue = InputBox("Entrez le Shift (Jour ou Nuit):")
     Dim ZoneValue As String: ZoneValue = InputBox("Entrez la Zone:")
     If Len(ShiftValue) = 0 Or Len(ZoneValue) = 0 Then MsgBox "vide": Exit Sub

     'Recherche de la plage pour ce shift et cette zone dans "Liste"
     aA = ThisWorkbook.Worksheets("Liste").Range("A24:D40").Value
     For i = 1 To UBound(aA)
          If aA(i, 3) <= Target.Row And Target.Row <= aA(i, 4) Then Set cSource = Me.Range(aA(i, 3) & ":" & aA(i, 4))
          If aA(i, 1) = ShiftValue And aA(i, 2) = ZoneValue Then
               Set cDestination = Me.Range(aA(i, 3) & ":" & aA(i, 4))
               On Error Resume Next
               Set cCell = cDestination.Columns(2).SpecialCells(xlBlanks)(1) 'première cellule "B" vide de cette zone
               On Error GoTo 0
          End If
     Next

     If cSource Is Nothing Then MsgBox "source est inconnu", vbCritical: Exit Sub
     If cDestination Is Nothing Then MsgBox "destination est inconnu", vbCritical: Exit Sub
     If cCell Is Nothing Then MsgBox "aucune cellule vide", vbCritical: Exit Sub
     If cSource.Address = cDestination.Address Then MsgBox "les 2 sont identique !!!": Exit Sub

     Target.EntireRow.Copy cCell.EntireRow   'copier et coller la ligne "target"
     On Error Resume Next
     Target.EntireRow.SpecialCells(xlConstants).ClearContents          'RAZ la ligne "target", sauf les formules
     On Error GoTo 0
     cSource.Sort cSource.Cells(1, 2), Header:=xlNo     'trier source
     cDestination.Sort cDestination.Cells(1, 2), Header:=xlNo     'trier destination

End Sub

Changement de Zone (3).xlsm (207,7 Ko)

Bonjour
Ravi de te retrouver
Je te propose ci-joint ton fichier avec l’adaptation permettant par le tri la mise en plage de la donnée ZZ en fin de son tableau correspondant pour sa suppression au moyen de la ligne suivante sans aucune donnée
Celle-ci nécessite que toutes les lignes après celui-ci jusqu’à la dernière soient toutes avec leur données (aucune ligne vide entre)

Testes et dis moi

Changement de Zone.xlsm (198,1 Ko)

Salut,

J’ai essayé avec l’adaptation, je trouve ça plutôt correct, le changement, le trie tout se fait correctement.
Ça va dans la vision que l on avait, c’est top.

Je l’importe sur la copie de mon fichier pour essayé, cependant il y un soucis. Le double clique fonctionne, le volet shift s’ouvre, le volet zone s’ouvre mais le message « shift et zone non trouvés » s’affiche.

Cela peu venir d’où ?

Bonjour
Merci pour ce retour très positif
Pour le message obtenu il faudrait que j’analyse le fichier avec toutes les données qui l’engendrent
Peux tu me le transmettre sans donnée confidentielle me dire les saisies que tu effectues (volet shift volet zone) afin que j’effectue des tests dans les mêmes conditions
Dans l’attente

2 « J'aime »

En me creusant un petit peu j’ai trouvé le problème, mes plages et mes shit n’étaient pas définies sur mon fichier de base,

Une fois les shift et les plages saisies, avec des donnée sur la ligne je me rend compte que seulement la cellule sélectionne de la colonne B est pris en compte et est deplacé vers son nouveau shit/zone et non toute la ligne

Dans le code mis en place du doubleclick seule la copie concerne l’intégralité de la ligne de l’ancienne zone vers la nouvelle
Le tri lui ne concerne que la colonne B pour celui de la nouvelle zone et de l’ancienne zone
Donc je pense que le souci est au niveau des tris et non de la copie
Que doit il en être exactement pour toutes ces phases (copie et tri) en ce qui concerne les cellules qui doivent être prises en compte

En mettant toute la ligne en rouge on voit que seul la cellule en colonne B est déplacée, le reste de la ligne, de la colonne C à la colonne OJ reste sur la même ligne. Toute la ligne de la colonne A à la colonne OJ doit être copié et déplacée vers son nouveau shift

Après vérification les lignes dans leur intégralité peuvent être intégrées dans les tris
Une nouvelle version ci-jointe adaptée dans cet esprit
Testes et dis moi

Changement de Zone.xlsm (198,1 Ko)

2 « J'aime »

A première vu, j’ai bien l’impression que c’est conforme à l’idée de base, je fais encore quelque teste et j’essaie de voir les possibles amélioration que l’on pourrais apporter. Je reviens vers toi rapidement. Merci pour ton aide précieuse nous avons bien avancé su le sujet. Top

Bon week-end,

Baptiste

Merci pour ce retour positif
Si ma réponse répond à tes attentes n’oublies pas de la valider un plus bien agréable
A ta disposition pour tout besoin

2 « J'aime »

??? le chemin le plus court entre 2 points est une ligne, pas un grand arc.
On determine la plage du shift&zone de source + ligne du target et la plage du shift&zone de destination + ligne vide et puis copier & coller & supprimer & 2 fois trier, finit. Ce « ZZ » sert à rien …

1 « J'aime »