J’ai un gros souci que je ne suis pas arrivé à résoudre depuis longtemps malgré tous mes essais et recherches.
Nous avons à copier des informations dans nos fichiers excel. Ces informations proviennent du net.
Le problème est que quand nous copions ces infos, en faisant « coller », le collage supprime tous les formats de nos cellules.
Bien sûr, (et je vous entends : ils n’ont qu’à copier valeurs ces … LOL), nous faisons des collages « Valeurs » pour que cela n’arrive pas.
Mais, pris par notre travail, souvent certains n’y pensent pas et « boum », les formats disparaissent et cela bloque les fichiers car des calculs sont liés aux formatages de certaines cellules.
D’où de grosses pertes de temps pour tout remettre d’aplomb.
J’ai trouvé un code de job 75 qui fonctionne très bien mais uniquement en copie de excel/excel.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
On Error Resume Next 'sécurité
With Application
If .CutCopyMode Then
.EnableEvents = False
.Undo
Selection.PasteSpecial xlPasteValues
.OnUndo "", ""
.OnRepeat "", ""
.EnableEvents = True
End If
End With
End Sub
Mais quand c’est un copier qui vient d’ailleurs (donc un copier de windows), ça ne fonctionne pas.
De plus, quand le texte à copier est sur plusieurs lignes, le coller est fait dans plusieurs cellules alors qu’il faudrait qu’il soit fait dans la même cellule.
Je joins un classeur test dans l’espoir qu’une solution existe.
Vous remerciant encore une fois de votre aide si précieuse,
Je vous souhaite à toutes et à tous un très beau dimanche,
Amicalement,
Lionel,
Je ne comprend pas bien !!
Chez moi le coller se fait uniquement sur la cellule sélectionnée (a condition, bien, sur d'utiliser le bouton prévu à cet effet)
Effectivement, il copie tout dans la même cellule et, même s'il sélectionne des cellules en dessous, les formats ne sont pas effacés mais la macro vire ce qui est dedans.
Vois cette formule
NB:La feuil2 doit exister:elle sert a composer la concatenation
Pour annuler la derniere phrase qui revient constamment:
modifier
For n = Selection.Row To Sheets("Feuil2").Cells(Rows.Count, Selection.Column).End(xlUp).Row
en
For n = Selection.Row To Sheets("Feuil2").Cells(Rows.Count, Selection.Column).End(xlUp).Row-1
C'est super, ça marche et c'est là une macro qui est très importante pour notre travail.
Vraiment un grand merci.
Petite cerise sur le gâteau, ce serait verrouillé si :
Mes collègues risquent de faire l'erreur de ne pas cliquer sur le bouton de votre macro et de faire un coller "excel".
Pour éviter cela, serait-il possible de bloquer le coller "excel" et de le rétablir après exécution de votre macro ?
Si c'est possible, ce serait bien mais c'est déjà super comme ça.
Encore un grand merci,