IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Garder le format d'une cellule quand on tronque une partie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut Garder le format d'une cellule quand on tronque une partie
    Bonjour à tou(te)s,
    J'essaye de conserver le format (caractères gras, italiques, etc), du contenu d'une cellule en supprimant une partie de ce contenu. Ca ne marche pas! voilà la partie du code concernée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub sousligne()
    Dim s As Worksheet
    Set s = Application.Worksheets("Feuil3")
    s.Activate
    For lig = 7 To 300 Step 2
        s.Cells(lig, 2).EntireRow.Insert , xlFormatFromRightOrBelow      'j'insère une ligne vierge
        lon3 = InStr(s.Cells(lig + 1, 2), Chr(10))                                      ' je cherche le caractère CHR(10)
        s.Cells(lig, 12) = Left(s.Cells(lig + 1, 2), lon3)                               ' j'envoie tout ce qui est avant le CHR(10) en colonne 12
        s.Cells(lig + 1, 2).Replace what:=s.Cells(lig, 12), replacement:=""  ' je veux effacer tout ce qui est avant le CHR(10)  de la cellule
        s.Cells(lig, 2) = s.Cells(lig, 12)
    Next
    End Sub
    Dans ma cellule cells(lig+1,2) le format initial s'est envolé.
    Une idée? J'ai essayé des PasteSpecial sans plus de succès.
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    S'il s'agit du format de la cellule, je ne vois pas la raison de perdre le format après avoir extrait les caractères de gauche avant chr(13) (LineFeed)
    Pourquoi insérer une ligne ?
    A condition que chaque cellule ait au maximum 1 retour à la ligne, voici un code qui fonctionne mais sans insertion de ligne
    Pour l'exemple on extrait les caractères à gauche du retour à la ligne, celui-ci compris de la ligne 2 à la ligne 4 de la colonne B de la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
      Dim r As Long
      Dim t As Variant
      For r = 2 To 4
       t = Split(Cells(r, 2).Value, vbLf)
        If UBound(t) Then Cells(r, 2).Value = t(1)
      Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut
    Merci Philippe, je ne connaissais pas la fonction Split...Je vais essayer. Dans le code fourni, j'ai enlevé tout ce qui ne concernait pas mon problème, mais j'ai oublié d'enlever la création d'une nouvelle ligne, qui n'a effectivement rien à voir avec le schmilbick...Jacques

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour faciliter son utilisation, vous pouvez utiliser une fonction générique comme ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function ExtractText(Text As String) As String
      Dim t As Variant
      t = Split(Text, vbLf)
      If UBound(t) > 0 Then ExtractText = t(1) Else ExtractText = Text
    End Function
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M2").Value = ExtractText(Range("M2").Value)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 289
    Par défaut
    Bonjour

    Il est possible de conserver uniquement le contenu d'une cellule avant un retour à la ligne sans VBA :

    - sélectionner la plage,
    - rechercher (CTRL+H),
    - remplacer ALT+010 * par rien (ALT+010 = maintenir enfoncé la touche ALT pendant la saisie de 010), le * va désigner ce qui est après le retour à la ligne

    ou encore par formule avec Excel 365, =TEXTE.AVANT(A1;CAR(10);;;;A1)sinon, très facile également par Power Query (de mon point de vu, toute transformation de données devrait être gérée par Power Query et non par VBA)



    Stéphane

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut Mon problème est la conservation du format
    Merci à vous deux,
    Split marche très bien, mais je perds toujours le format des mots qui sont dans la cellule d'origine.
    Mon problème n'est pas de séparer une cellule en deux, c'est de garder le format après la séparation.
    Je n'y avais jamais pensé, mais je viens de découvrir que si l'on exécute l'instruction cell2 = cell1, le format (gras, italique, etc.) de cell1 ne se retrouve pas dans cell2, contrairement à ce qui se passe si, en Excel seul, on fait un copier-coller ou un CTRL-C et CTRL-V. Est-ce que cette perte est inéluctable en VBA?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Garder le format d'une case excel en l'enregistrant dans une base SQL
    Par morpheuss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/09/2018, 13h42
  2. Garder le format d'une cellule Excel
    Par peb12 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 23/08/2011, 09h38
  3. [VBA-E]changer le format d'une cellule dans un spreadsheet
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/02/2006, 11h12
  4. Comment forcer le format d'une cellule?
    Par cha_cha dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 14h31
  5. Display Format d'une cellule d'une DBGrid
    Par Wilco dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/10/2004, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo