Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Format personnalisé par collage

brutor2

XLDnaute Junior
Bonjour à tous,

J'ai une nouvelle fois besoin de votre précieuse aide n'arrivant pas à finaliser mon projet.

Mais je vais avoir du mal à être clair je crois. N'hésitez pas à me le dire...

Je récupère des données d'une application de mon travail par un Ctrl-C.

Puis j'effectue un collage spécial dans un tableau excel qui me sert de planning (je précise que le collage spécial me permet uniquement le choix Texte ou Texte unicode, je ne sais pas si c'est important pour votre info).

J'obtiens donc les données telles que celles visibles dans la plage B17:AJ25. (Uniquement mis à cet endroit pour vous montrer l'import, mais ne doivent pas apparaître sur le tableau définitif)

Je voudrais en fin de compte les récupérer telles qu'elles sont visibles dans la plage B4:AJ12

C'est à dire par exemple :
1 le 006/821 devienne 6 (cela pourrait être aussi 006/816 qui doit devenir 6)
2 Le === devienne R
3 Les nombres impairs devront être en bleu, les nombres pairs en rouge, le R sur fond Gris.

Pour le point 3 j'y suis arrivé par une mise en forme conditionnelle sur mon tableau, mais le problème est d'abord de résoudre le point 1 et 2.

Et là je tourne en boucle sans savoir comment faire.

Merci de votre aide te je vous joints le fcihier.

Cordialement

Brutor
 

Pièces jointes

  • Planning.xls
    28 KB · Affichages: 37
  • Planning.xls
    28 KB · Affichages: 43
  • Planning.xls
    28 KB · Affichages: 40
G

Guest

Guest
Re : Format personnalisé par collage

Bonjour Brutor

Sélectionner une cellule du tableau des données importées (B17:AJ25)
et lancer la macro suivante

Code:
Sub ConvertirDatas()  
    'Remplacer '===' par 'R'
    with ActiveCell.CurrentRegion
       .Replace What:="===", Replacement:="R", LookAt:=xlPart, _
           SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
           ReplaceFormat:=False
     end with
 
   'Convertir les valeurs numériques
    Dim c As Range
    Dim pos As Integer
    For Each c In Selection
        pos = InStr(1, c, "/", vbTextCompare)
        If pos > 1 Then c = Val(Left(c, pos - 1))
    Next c
 
    'Copier les valeurs et les passer à B4
    ActiveCell.CurrentRegion.Copy
    Range("B4").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    
    
End Sub

A+
 

Paritec

XLDnaute Barbatruc
Re : Format personnalisé par collage

Bonjour Hasco brutor,
bon moi j'ai fait le fichier alors je le mets tout de même
cliques sur le bouton formater et redis nous si c'est ce que tu veux
a+
Papou
 

Pièces jointes

  • Planning.zip
    12 KB · Affichages: 36
  • Planning.zip
    12 KB · Affichages: 23
  • Planning.zip
    12 KB · Affichages: 21

Paritec

XLDnaute Barbatruc
Re : Format personnalisé par collage

Bonsoir Hasco brutor2
et voilà la version avec copie des valeurs formatées
a+
Papou
 

Pièces jointes

  • PlanningV2.zip
    13.5 KB · Affichages: 24
  • PlanningV2.zip
    13.5 KB · Affichages: 23
  • PlanningV2.zip
    13.5 KB · Affichages: 23

brutor2

XLDnaute Junior
Re : Format personnalisé par collage

Bonsoir Hasco et Paritec,
Bonsoir le forum,

Tout d'abord bravo à tous les deux et merci.

Cela correspond au résultat souhaité. J'ai donc deux solutions pour un seul problème que rêver de mieux.

La partie "je recopie les valeurs pour les mettre dans le tableau final"ne devrait pas m'être nécessaire car je pense plutôt importer les valeurs dans le tableau final et appliquer les deux premières parties de la macro de Hasco ou la première macro de Paritec. J'essayerais dès lundi au boulot.

Le plus dur va être de choisir la macro !!!

Pourriez-vous m'éclairer afin de mieux comprendre sur:

pour Hasco
Code:
For Each c In Selection
pos = InStr(1, c, "/", vbTextCompare)
        If pos > 1 Then c = Val(Left(c, pos - 1)

pour paritec ou papou (nom qui m'est donné aussi par mes filles.... )
Code:
Cells(i, a) = Left(Cells(i, a), 3)
"Prendre les 3 termes en partant de la gauche peut-être ???"

Merci de me permettre d'avancer et bon week end.

Cordialement.

Brutor
 
Dernière édition:
G

Guest

Guest
Re : Format personnalisé par collage

Re,

Code:
For Each c In Selection
pos = InStr(1, c, "/", vbTextCompare)
        If pos > 1 Then c = Val(Left(c, pos - 1)

Pour chaque cellule de la selection
Trouver la position (éventuelle) de "/" dans le texte de la cellule
Si pos est Supérieur à 1 renvoyerla Valeur de la partie gauche de la cellule jusqu'à la position précédant "/" soit pos -1'

Sinon, comme je viens de le dire sur un autre post. F1 sur un mot clef fait des merveilles pour les explications détaillées du langage VBA

Bon week-end
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…