Macro désactive le copier coller

Bonjour le forum

Dans le fichier TOTO (Exemple) lorsque je fait un copier/ coller ça m'affiche bien la couleur mais ça me désactive le coller

Là il faut des spécialistes!!!

Je joint aussi la macro du véritable fichier.

Cordialement

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Obj As Shape, Ligne As Long

  If UCase(Sh.Name) <> "MENU" And Target.Count = 1 And Target.Column = 2 And Target.Row > 5 Then
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect

    For Each Obj In ActiveSheet.Shapes
      If InStr(1, Obj.TextFrame.Characters.Text, "Centrer Texte", vbTextCompare) > 0 Then Exit For
    Next Obj

    If Not Obj Is Nothing Then
      Ligne = Range("B" & Rows.Count).End(xlUp).Row

      With Obj.TextFrame
        If Range("B" & Ligne).HorizontalAlignment = xlCenterAcrossSelection Then
          .Characters.Text = "Annuler Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
          .Characters(Start:=23, Length:=22).Font.ColorIndex = 5
        Else
          .Characters.Text = "Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
          .Characters(Start:=15, Length:=22).Font.ColorIndex = 5
        End If
      End With
    End If
    ActiveSheet.Protect
  End If
End Sub
11toto.zip (7.51 Ko)

Bonjour,

c'est le bon fichier ? car il n'y a pas la macro ci-dessus

A mon sens, comme tu mets Protect à la fin de ta procédure

ActiveSheet.Protect

cela te bloque beaucoup de choses !

Bonjour Steelson

Le fichier TOTO est un exemple. C'est pour montrer que le texte du rectangle change bien de couleur mais que le copier/coller est inactif

La macro ci-dessus est la macro du véritable fichier. J'ai mis au cas où un "as" trouverait l'astuce et voudrait bien la modifier.

Merci à toi

Cordialement

Le fichier TOTO est un exemple. C'est pour montrer que le texte du rectangle change bien de couleur ...

ok

... mais que le copier/coller est inactif...

pas compris ! chez moi je peux copier/coller ... que ce soit la shape ou une range

peux-tu être plus précis ?

Dans le fichier TOTO lorsque je copie la cellule A1(aze) et que je veux la coller n'importe où le coller devient inactif

Mais si je me met sur la cellule A1 le texte apparaît dans la barre des formules je le copie (dans la barre des formules) et colle où je veux ça fonctionne.

Cordialement

C'est ce que j'ai fait

Ctrl+C sur A1

Ctrl+V plusieurs fois partout sur la feuille, la même ou une autre !

Bonjour al87,

si tu as des anomalies de fonctionnement avec ton copier/coller, c'est p't'être pa'c'que tu utilises Excel 2003 ?

screen

car si tu as Windows 10, Excel 2003 n'est plus pris en charge, et y'a des incompatibilités entre les deux !

Microsoft rend incompatibles ses anciennes versions d'Office pour t'obliger à acheter ses nouvelles versions ; c'est un genre de vente forcée déguisée, quoi ! paraît qu'en informatique, tout est permis, même l'obsolescence programmée !

c'est ça l'avantage d'avoir le même fournisseur pour le système d'exploitation Windows et pour l'application Office : il en profite pour faire ce qu'aucun autre fournisseur de logiciel indépendant n'aurait osé faire !

dhany

Bonjour dhany

Non pas Windows 10 mais 7 et ça fonctionne très bien

Je pense que c'est les:

.characters. (start:=15,lengt:=22 Ect. Qui pose problème les couleurs.

Merci de t'intéresser au sujet.

Cordialement à toi

TOUTES MES EXCUSES MAIS UN SMARTPHONE PAS LE TOP

Bonsoir le forum

Voici mon fichier "presqu" réel TOTO_2

Exemple si on veut copier ABCDEFG dans cellule B9 on ne peut pas sauf le copier dans la barre des formules et ça fonctionne.

La macro en cause je pense est celle qui est la dernière dans ThisWorkbook

Merci à vous

Cordialement

5toto-2.zip (57.41 Ko)

C'est pas le même fichier !

Ajoute Application.ScreenUpdating = True

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Obj As Shape, Ligne As Long

  If UCase(Sh.Name) <> "MENU" And Target.Count = 1 And Target.Column = 2 And Target.Row > 5 Then
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect

    For Each Obj In ActiveSheet.Shapes
      If InStr(1, Obj.TextFrame.Characters.Text, "Centrer Texte", vbTextCompare) > 0 Then Exit For
    Next Obj

    If Not Obj Is Nothing Then
      Ligne = Range("B" & Rows.Count).End(xlUp).Row

      With Obj.TextFrame
        If Range("B" & Ligne).HorizontalAlignment = xlCenterAcrossSelection Then
          .Characters.Text = "Annuler Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
          .Characters(Start:=23, Length:=22).Font.ColorIndex = 5
        Else
          .Characters.Text = "Centrer Texte" & vbLf & "Sur Plusieurs Colonnes"
          .Characters(Start:=15, Length:=22).Font.ColorIndex = 5
        End If
      End With
    End If
    ActiveSheet.Protect
    Application.ScreenUpdating = True

  End If
End Sub

ET regarde tes MFC !!!!!!!!!!!!!!!!!!!!!!

6toto-2.zip (172.05 Ko)

@al87

patiente un moment : je vais t'écrire un message très intéressant.

dhany

Dhany, cela fait 1h30 qu'on patiente

Bon je vais fumer un calumet pendant ce temps ...

@al87

* ouvre ton fichier "TOTO_2.xls" ; tu es sur la feuille "Août 2018" (je précise car tu as 12 autres feuilles cachées ! )

* en plus, pour ta feuille concernée "Août 2018", elle est protégée (sans mot de passe, mais protégée quand même !)


screen

* note qu'en cellule B9, dès que tu tapes la lettre "a", la saisie semi-automatique propose "aBCDEFG", et si tu appuies sur la touche Entrée, ça met : "ABCDEFG" ; bien sûr, dans tes options Excel, la saisie semi-automatique doit être activée ! pour Excel 2007 :

saisie semi automatique

sur Excel 2003, ça existe aussi. de ce point d'vue-là, chercher à faire un copier/coller est inutile ! mettons que pour une raison ou une autre, tu tiennes absolument à faire un copier/coller ; dans ce cas, lis la suite de ce post.


* sélectionne la cellule B6 ; fais Ctrl c ➯ sur le contour de la cellule, tu peux voir un cadre de tirets défilants, n'est-ce pas ? tant que c'est présent, tu peux faire ton coller ; or fais maintenant très attention à ceci : dès que tu auras sélectionné B9 (pour y faire ton coller), le cadre de tirets défilants disparaît ➯ c'est fini ! c'est plus possible de faire ton coller !

* alors pourquoi le cadre de tirets disparaît dès que tu sélectionnes B9 ? non, c'est pas juste pour t'embêter, c'est à cause de cette sub qui est dans ThisWorkbook : Workbook_SheetSelectionChange() ; la preuve : ajoute Exit Sub comme suit :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Exit Sub
Dim Obj As Shape, Ligne As Long
...
End Sub

retourne sur ta feuille de calcul, et sélectionne B6 ; cette fois, après avoir fait ton Ctrl c, le cadre de tirets défilants ne disparaîtra pas quand tu sélectionneras B9 ; et donc tu peux faire ton coller !

bien sûr, c'était juste pour l'explication de la cause ; ça résout pas le problème puisque tu as besoin du travail fait par ta sub Workbook_SheetSelectionChange()


note quand même que même en laissant le code VBA comme il était au départ, tu peux faire ceci :

* sélectionne B6 ; appuie successivement sur ces touches : F2 ; Début ; Maj Fin ; Ctrl c ; Echap

* sélectionne B9 ; appuie successivement sur ces touches : F2 ; Ctrl v ; Entrée ; ok ?

mais la saisie semi-automatique est quand même bien plus simple ... sauf si y'a plus d'un choix possible similaire ➯ elle se retrouve en panne d'inspiration, la pauvre ! mais c'est pas sa faute : elle peut pas deviner toute seule c'que tu préfèrerais entre des choix similaires ! et là, ça s'comprend qu'tu tiennes absolument à faire un copier/coller !

dhany

@Steelson et al87

Steelson a écrit :

Dhany, cela fait 1h30 qu'on patiente

Bon je vais fumer un calumet pendant ce temps ...

ça y'est ! c'est enfin prêt !!! vu la longueur du texte de mon post + mise en forme du texte + copies d'écran à faire et à ajouter ➯ édition message prendre beaucoup beaucoup de temps, ugh !!! en plus, j'ai dû aller couper du bois avec mon tomahawk pour faire du feu, et rajouter des touffes d'herbe humide pour faire plus de fumée, sinon, signaux pas vouloir passer, ugh !

https://forum.excel-pratique.com/viewtopic.php?p=676873#p676873

notez que mon post de 20:05 a été prêt 4 minutes après celui de Steelson de 20:01, mais j'comprends qu'après plus d'une heure et demie d'attente, même le chasseur émérite Steelson se soit impatienté, lui qui est tellement patient et tenace, d'habitude ; c'est pour ça qu'aucun gibier lui échappe, et surtout pas un bon bison (au pemmican) ! miam !

ajout : moi, j'suis non fumeur, alors moi pas vouloir fumer calumet, sinon, j'deviens tout vert ! (mais bon, si c'est pour fumer le calumet de la paix, faudra bien que j'me dévoue : y'a d'ces obligations, dans la cavalerie, j'vous dis pas ! Lucky Luke serait pas content si j'me conformais pas aux coutumes indiennes ! la paix de l'Union States en dépend)

dhany

Re-Bonsoir dhany

SUPER il suffit d'ajouter =>

Exit Sub 

et ça roule

Mais quelles explications comme d'hab

C'est le même fichier sur lequel tu as fait aussi une macro il y a quelque temps.

Encre un GRAND merci

Bonne fin de soirée à toi et aux autres membres du forum

Bien cordialement

Bonjour,

Re-Bonsoir dhany

SUPER il suffit d'ajouter =>

Exit Sub 

et ça roule

Autant supprimer la macro, cela fera le même effet !

Il faut commencer par apprendre à faire des choses simples...

non, Steelson, tu te trompes : al87 n'a pas répondu : « pourquoi faire simple quand on peut faire compliqué ? »

Bonjour dhany et Steelson

Ah! non surtout pas supprimer.

Le programme est très "complexe". Dans le fichier TOTO_2 il y a qu'une toute petite partie du fichier.

Encore merci

Bonne fin de WE

Cordialement

Me voici revenu

Parlé trop vite.

Ce matin comme tous les matin j'ouvre mon fichier et ça ne va pas CAR MAL expliqué donc mauvaises réponses

Meilleures explications j'espère ci-dessous!!!

Une macro dans Thisworkbook

En modifiant la cellule active (ligne>5 et colonne =2), elle détecte le format de la dernière ligne écrite de la colonne B (soit Centré sur plusieurs colonnes ou autre format) et ajoute/retranche le texte "Annuler" dans le cadre "Centrer Texte Sur Plusieurs Colonnes"

Mais si je veux faire un copier/coller, la sélection disparait dès que je modifie la cellule active

Lors de tests j'ai remarqué que le fait de déprotéger/proteger ou de modifier la couleur d'une partie du texte "Annuler Centrer Texte Sur Plusieurs Colonnes" supprime la sélection

Pour la déprotection/protection j'ai comme solution de travailler avec les pages déprotégées

Pour la détection du format de la dernière ligne j'ai trouvé comme solution de tester si je suis en mode "Copier" et dans ce cas de ne pas modifier la couleur du texte, mais le résultat n'est pas glop glop (tout le texte même couleur)

Si quelqu'un à une solution pour que tout fonctionne comme je voudrais je luis serais reconnaissant au moins pendant 10 minutes (héhé)

Cordialement

Rechercher des sujets similaires à "macro desactive copier coller"