Mise en forme automatique des cellules après déplacements (VBA?)

Bonjour,

J'ai un planning sur Excel. Dans les colonnes J, K, L, M, je remplis mon prévisionnel et dans C, D, E, F, les tâches réalisées. Je déplace donc les cellules de droite à gauche lorsque les tâches prévisionnelles passent dans les colonnes des tâches réalisées.

Le problème est que je perds la mise en forme des cellules lors des déplacements (couleurs de fond et bordures). J'ai essayé de résoudre ce problème avec une mise en forme conditionnelle en fonction des lignes paires et impaires, mais l'emplacement initial des cellules perd la mise en forme (cellule blanche).

Je pensais à un bouton sur lequel on pourrait cliquer pour remettre à jour la mise en forme initiale...

Merci.

8test.xlsx (136.28 Ko)

bonjour mjuju,

vous faites cela manuellement, donc copier& coller ? Si vous les collez comme "valeur" au lieu de coller (normal) ?

Oui bien sûr mais c'est un tableur qui est très utilisé avec pas mal de données , le copier/collervaleur est une opération un peu pénible!

bonjour,

Copier et coller sera fait par un simple "clicque droite" de la souris.

vous clicquez avec la souris droite sur une cellule de J6:M2290.

  • Si elle se trouve dans la colonne J, cette cellule devient gris et sera la source pour ce copie&colle
  • si elle se trouve dans la colonne C et on a déjà une cellule "gris", ses 4 cellules seront collées sur cette cellule et seront supprimé dans les colonnes J:M.
  • une autre colonne = supprimez le couleur gris
7test-93.xlsb (65.08 Ko)

Est-il envisageable que l'action de déplacer des cellules soit remplacé par une action couper->coller valeurs? j'ai essayé de faire un VBA mais je n'y arrive pas... Comme ca nous gardons systématique le format

re,

dans le module de la feuille "2024", vous trouvez ceci. Donc je suppose que vous n'avez pas lu/compris ma description ici dessus.

Ou est-ce plus facile ? Ce copie-colle, cela se fait sur la même ligne ?

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Dim Isect As Range, c As Range
     Set Isect = Intersect(Target, Range("C6:M2289"))     'clicquez droite sur une de ces cellules
     If Isect Is Nothing Then Exit Sub
     Cancel = True
     With Isect(1)
          If .Column = 10 Then               'colonne 10 = J
               .Name = "Source"              'la source à copier
               .Interior.Color = RGB(100, 100, 100)     'colorer gris
          Else
               On Error Resume Next
               Set c = Range("Source")       'la source existe ?
               On Error GoTo 0
               If Not c Is Nothing Then      'oui
                    If .Column = 3 Then      'on a clicquez dans la 3eme colonne (C)
                         c.Resize(, 4).Copy  'copiez 4 cellules "source"
                         .PasteSpecial xlValues     'collez-les comme valeur
                         c.Resize(, 4).ClearContents     'vider source
                    End If
                    c.Interior.Color = xlNone     'enlever couleur gris
                    ThisWorkbook.Names("Source").Delete     'supprimer nom "Source"
               End If
          End If
     End With
End Sub

Disons que ce classeur est utilisé par beaucoup de monde, qui ont tous des niveaux en Excel assez différents... Et l'habitude, depuis longtemps, est de déplacer les cellules... Généralement, on sélectionne plusieurs lignes de la colonne J, K, L, M que l'on déplace en C, D, E, F... (par exemple: J138:M142 déplacés en C146:F150 ou
J158:M158 déplacé en C151:F151 ou J160 en C169)

Dans votre cas, le clic droit fonctionne uniquement au bord de la sélection... Pas facile pour certains utilisateurs...

Votre proposition me convient mais n'est pas tellement adaptée à l'ensemble des utilisateurs...

C'est pour cela qu'un déplacement de cellules (sélections de plusieurs cellules en simultanées) traduit par un VBA en couper/collervaleurs...

Dans tous les cas je vous remercie du temps que vous passez sur ma problématique...

Merci

bonjour, 2eme essai, maintenant on peut sélectionner plusieurs lignes des colonnes J:M

7test-93.xlsb (67.72 Ko)

Bonjour,

je vous remercie mais j'avoue avoir du mal à comprendre. Que je sélectionne une ou plusieurs cellules le clique droite ne fonctionne pas, et le déplacer cellules est "normal".

Dans tous les cas je vous remercie

MJ

re,

dans ce video, vous verrez "source debut" et "source fin" dans la colonne J et destination dans la colonne C, le but est donc de copier la plage "source debut" > "source fin" vers la ligne juste en dessous "destination" (et ne pas sur cette cellule parce que la destination doit être vide, pour le moment)

Dans ce video, il y a 4 moments clés, (N°3 est facultatif)

  1. vous sélectionnez une plage avec quelque cellules dans les colonnes J:M. S'il y a des cellules dehors ces colonnes, elles seront ignorées. (Cliquez sur le coin supérieur gauche avec la souris gauche et maintenez-le enfoncé, puis faites glisser la souris vers le bas à droite et relâchez-la.)
  2. vous clicquez avec la souris droite dans cette sélection >>>> excel choisit la plage à copier et la colore en gris, comme çà, vous savez que vous avez la bonne plage.
  3. vous sélectionnez une cellule dans la colonne C (facultatif, pas obligatoire !!! )
  4. vous clicquez avec la souris droite dans cette cellule de la colonne C et la plage sera copié vers ici et sera supprimé à droite
4mjuju.zip (380.26 Ko)

EDIT : renommez mjuju.txt en mjuju.mp4 parce que l'extension "mp4" n'était pas permis.

ok! j'ai compris
Merci pour votre aide!

Salut mjuju, BsAlv,

une autre idée, pas encore "sécurisée", si tes utilisateurs ne sont pas trop gauches!
Plus besoin de sélectionner l'entièreté des valeurs à copier : juste la ou les cellules à gauche dans la colonne [I].
Les valeurs à transférer se colorent de rouge.
Pour annuler la procédure de transfert, cliquer n'importe où en dehors des colonnes [H:I].

image

Il suffit de cliquer dans la colonne [H] en regard de la ligne-cible pour que le transfert s'effectue.
Pour plus de "confort", j'ai élargi les colonnes [H:I].

image image

Si nécessaire, le tableau de droite se "regroupe" !

image

Il faut, si cela te convient, encore "sécuriser" le ciblage de transfert et, éventuellement, demander une confirmation.

A+

1mjuju.xlsm (145.07 Ko)

Salut l'équipe,

petites améliorations :
- en fonction de l'expertise de l'utilisateur, ils pourra :
* via la colonne [I], sélectionner les lignes à transférer IMMEDIATEMENT, VBA se chargeant de calculer, en fonction du jour et de l'heure de la sélection, l'endroit exact où transférer les données sans qu'il n'y ait besoin de sélectionner les cellules-cibles.
* via la colonne [N], comme dans la version précédente, après coloration des données en rouge, permettre de choisir manuellement les cellules-cibles du transfert.

- pour le transfert MANUEL des données, plus besoin de cibler la ligne précise. Il suffit de cliquer directement sur le libellé en colonne [G] du jour et du moment choisi (MATIN ou AP MIDI). VBA fait le reste.

- en cas d'erreur, via une sélection en colonne [B], il y aura transfert inverse et immédiat du tableau de gauche vers le tableau de droite.

Plus simple, tu meurs...

A+

1mjuju.xlsm (148.56 Ko)

Bonsoir l'équipe,

Une petite correction, chuuuuut!
Un affichage automatique de la semaine en cours au démarrage.
À ce propos, les tâches inexécutées d'une semaine peuvent-elles ou doivent-elles être déplacées automatiquement à la semaine suivante ?

Et une petite dernière nouveauté : tu peux déplacer manuellement des tâches du tableau de droite à une semaine ultérieure.

- sélectionner ces lignes via la colonne [N] = déplacement manuel donc coloration en rouge.
- sélectionner ensuite, toujours en colonne [N], une ligne VIDE dans une autre semaine. VBA fait le reste.
Vouloir déplacer ces lignes dans la même semaine ne fonctionnera pas, évidemment!

A+

0mjuju.xlsm (150.28 Ko)

Salut Daniel, BsAlv,

encore une petite amélioration : la possibilité de supprimer des tâches du tableau de droite tout en conservant les données si changement d'avis éventuel.

- sélectionner au moins 2 colonnes dans [J:M] sur une ou plusieurs lignes et relâcher.

image

- la sélection est supprimée et le tableau se regroupe, si nécessaire.
Les données sont sauvegardées en [KK1].

image

- pour les retrouver, un clic DROIT sur une cellule vide n'importe où dans le tableau [J:M] récupère la sauvegarde.
[KK1] est alors effacé.

image image

Là, je ne vois plus quoi ajouter comme fonctionnalités!

A+

0mjuju.xlsm (154.43 Ko)
Rechercher des sujets similaires à "mise forme automatique deplacements vba"