XL 2013 (VBA) Modifier mise en forme d'une cellule d'une autre feuille

mestrod

XLDnaute Nouveau
Bonjour, désolé pour le titre très peu explicite.

J'ai un problème que je n'ai pas réussi à résoudre après quelques heures de recherches..

Je crée une macro dans le but de simplifier l'action de copié collé d'un planning.

Le code fonctionne comme ceci : on "active" la première cellule des éléments à copier et on lance le code.

Dans la continuité du code on sélectionne la cellule où on veut coller les données

La macro se charge de supprimer les données de départ, et remettre à niveau la mise en forme conditionnelle des données collées (si on ne le fait pas, la règle de mise en forme reste celle de la plage de cellule de départ)

Le tout fonctionne très bien lorsque la cellule destinatrice est sur la même feuille que la cellule copiée.
Mais lorsque l'on colle sur une autre feuille, la partie après le collage ne fonctionne pas, les mises en forme conditionnelle ne suivent pas..

Je vous joins un document pour vous faire une idée.
Il faut sélectionner une cellule d'une colonne "nbre" puis ctrl+q et sélectionner une autre colonne "nbre" pour coller.

Si vous avez une solution, je prends volontiers.

En vous remerciant,

Mestrod.


Code:
    Sub copiecolle2()
 
    Dim tgt As Variant
    Dim x As Variant

    Set x = ActiveCell 'enregistre la position de départ
    ActiveCell.Resize(, 6).Select 'étend la sélection à partir de la cellule active
 
    On Error Resume Next
 
    Set tgt = Application.InputBox("Sélectionner la destination", "Coller", Type:=8)   'défini une cible de collage par l'opérateur

    If Err.Number <> 0 Then
         Else
 
            Selection.Copy tgt 'copie la sélection vers la cible
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
         
            Selection.ClearContents 'efface le contenu des cellules copiées
 
        x.Offset(, 1).Select
        Selection.ClearContents 'sélectionne et efface un résidu issu d'une autre macro
     
        tgt.Offset(, 2).Select 'retourne à la cellule où sont collées les données et sélectionne une zone spécifique
        ActiveCell.Resize(, 4).FormatConditions.Delete 'efface le résidu de mise en forme conditionnelle
     
        tgt.Offset(1, 2).Select
        ActiveCell.Resize(, 4).Copy 'sélectionne la nouvelle mise en forme (semblable à celle du dessous)
 
        tgt.Offset(0, 2).Select
        ActiveCell.Resize(, 4).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        'applique la bonne mise en forme

    End If
 
    On Error GoTo 0
 
    End Sub
 

Pièces jointes

  • Classeur3.xlsm
    123.4 KB · Affichages: 62

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki