Réduire le nombre de caractère

alex67800

XLDnaute Impliqué
Bonjour le Forum,
Cela fait bien longtemps que je ne vous ai plu sollicité, mais heureux de retrouver la communauté ^^

Je suis confronté à un petit problème, qui est certainement simple, mais sur lequel je bute depuis 2 jour.

Je m'explique:
Dans un classeur source, je copie (via vba) l'ensemble d'un plage de données (Nom et Prénom), et la colle dans un classeur destination. Jusque là, facile. Les données de mon classeur source avait toujours 10 caractères maximum(espace compris).

Depuis peu, la taille des ces caractères est devenue variable et contient maintenant l'ensemble du Nom et du Prénom.
Dans mon fichier destination, je souhaiterai, soit gardé un maximum de 10 caractères, soit le limiter au Nom et 1ère lettre du Prénom.

Je verrais bien 2 méthodes:
1- Je garde la première partie du code et sélectionne en une seule fois la plage souhaitée, dans la deuxième partie du code (.PasteSpecial) de la plage de destination j'arrive à limiter le nombre de caractère effectivement copié.
2 - Je maintiens mon code copier/coller tel quel, par contre je créé un deuxième code dans le classeur destination qui réduit toutes les données à 1 caractère après l'espace (Nom & espace & 1ère lettre après l'espace)

Comme cela fait longtemps que je n'ai plus fait de codes, auriez-vous un solution simple à me proposer?

Merci d'avance pour votre aide.

Alex
 

alex67800

XLDnaute Impliqué
Bonjour le Forum,
Cela fait bien longtemps que je ne vous ai plu sollicité, mais heureux de retrouver la communauté ^^

Je suis confronté à un petit problème, qui est certainement simple, mais sur lequel je bute depuis 2 jour.

Je m'explique:
Dans un classeur source, je copie (via vba) l'ensemble d'un plage de données (Nom et Prénom), et la colle dans un classeur destination. Jusque là, facile. Les données de mon classeur source avait toujours 10 caractères maximum(espace compris).

Depuis peu, la taille des ces caractères est devenue variable et contient maintenant l'ensemble du Nom et du Prénom.
Dans mon fichier destination, je souhaiterai, soit gardé un maximum de 10 caractères, soit le limiter au Nom et 1ère lettre du Prénom.

Je verrais bien 2 méthodes:
1- Je garde la première partie du code et sélectionne en une seule fois la plage souhaitée, dans la deuxième partie du code (.PasteSpecial) de la plage de destination j'arrive à limiter le nombre de caractère effectivement copié.
2 - Je maintiens mon code copier/coller tel quel, par contre je créé un deuxième code dans le classeur destination qui réduit toutes les données à 1 caractère après l'espace (Nom & espace & 1ère lettre après l'espace)

Comme cela fait longtemps que je n'ai plus fait de codes, auriez-vous un solution simple à me proposer?

Merci d'avance pour votre aide.

Alex
 

alex67800

XLDnaute Impliqué
Re Bonjour le Forum,
En replongeant un peu, je m'en suis sorti.

J'ai 2 variantes, soit je limite à 10 caractères (valeur de Cellule2), soit je limite à 1 lettre après l'espace. Je vous joint le bout de code, ça peut toujours servir.
Code:
Sub Reduit_Caractere()
'
Application.ScreenUpdating = False
'
    Dim Plage, PLage2 As Range, Cellule, Cellule2 As Range
    Dim wsbd, wsbd2 As Worksheet, Trouve As Boolean

    Set wsbd = Sheets("test1")
    Set Plage = wsbd.Range("C12:BE" & wsbd.Range("A65536").End(xlUp).Row) ' la plage de mes données
    Set wsbd2 = Sheets("données")
    Set PLage2 = wsbd2.Range("O1:O" & wsbd2.Range("O65536").End(xlUp).Row) ' la colonne contenant mes données limité à une chaîne de 10 caractère
  
    For Each Cellule In Plage
        
        For Each Cellule2 In PLage2
'Si Cellule contient Cellule, je limite Cellule à 1 caractère après l'espace
   If Cellule.Value Like "*" & Cellule2.Value & "*" Then
      Cellule.Value = Left(Cellule.Value, InStr(Cellule, " ") + 1)
    End If
  Next Cellule2
  Next Cellule
Application.ScreenUpdating = True

Code:
 Je compare si Cellule contient Cellule2
    'If Cellule.Value Like "*" & Cellule2.Value & "*" Then
     ' Cellule.Value = Cellule2.Value
   ' End If

J'aime bien faire les questions et les réponses, cela m'oblige à réfléchir ^^
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 200
Membres
102 816
dernier inscrit
bolivier