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 :

Découper une variable de type string pour l'inserer a un commentaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut Découper une variable de type string pour l'inserer a un commentaire
    Bonjour

    voila je crée un commentaire pour une cellule et j'y insère une variable de type string. Je redimensionne le commentaire en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If ideEC <> "" Then
           Cells(ligneP, 15).Select
           With Selection
                  .AddComment.Text ideEC
                  .Comment.Visible = True
           Cells(ligneP, 15).Comment.Shape.Select True
           With Selection
                  .AutoSize = True
           End With
           Cells(ligneP, 15).Select
           Selection.Comment.Visible = False
    End If
    Problème... ma variable ideEC peut contenir un string de plus de 300 caractères et de ce fait je voudrais le découper... sans pour autant couper les mots en deux

    j'ai un bout du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Len(ideEC) < 50 Then
        ideECC = Chr(10) & ideEC
    Else
        Do While Len(ideEC) > 50
            ideECC = ideECC & Chr(10) & Left(ideEC, 50)
            ideEC = Right(ideEC, Len(ideEC) - 50)
        Loop
    End If
     
    MsgBox ideECC & Chr(10) & ideEC
    mais comment tester si le dernier mot de chaque ligne est entier?
    Da vinci Code....


    Code??? qui a dit Code?

  2. #2
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    bon pour ne pas couper le mot j'ai trouvé... j'aurais mieux fait de chercher un peu plus longtemps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        If Len(Even) < 25 Then
            Even = "Evénement redouté : " & Chr(10) & Even
        Else
            Do While Len(Even) > 25
                i = 25
                Do While Mid(Even, i, 1) <> " " And i <> Len(Even)
                    i = i + 1
                Loop
                EvenC = EvenC & Chr(10) & Left(Even, i)
                Even = Right(Even, Len(Even) - i)
            Loop
            Even = "Evénement redouté : " & EvenC & Chr(10) & Even
        End If


    par contre une question....

    les commentaires apparaissent a droite de la cellule et impossible de les déplacer. Avez vous une idée? (version Excel 2002)
    Da vinci Code....


    Code??? qui a dit Code?

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Une solution en decoupant la phrase en mot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Dim str() As String
    Dim strFinal As String
    Dim i As Integer
     
    Dim nbCar As Integer
     
    str = Split(Range("A1").Value, " ")
     
    For i = 0 To UBound(str)
     
        If nbCar + Len(str(i)) > 30 Then
            strFinal = strFinal & Chr(13) & str(i) & " "
            nbCar = 0
        Else
            strFinal = strFinal & str(i) & " "
            nbCar = nbCar + Len(str(i)) +1
        End If
     
    Next i
     
    MsgBox strFinal
    Jérôme

  4. #4
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    merci jfontaine en fonctionnement cest plus simple... et plus complexe dans la conception. Et ca ma permit de voir 2/3 fonctionnalité que je connaissais pas

    bon je clos...

    ++
    Da vinci Code....


    Code??? qui a dit Code?

  5. #5
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonjour,

    Une autre approche, bien plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub cf()
    Dim Ratio1 As Integer, Ratio2 As Single
            With Selection
                .AddComment.Text ideEC
                .Comment.Visible = True
            End With
        ActiveCell.Comment.Shape.Select True
            With Selection
                .AutoSize = True
                Ratio1 = .Width /.Height
                Ratio2 = (Ratio1 / 1.5) ^ 0.5
                .Width = .Width / Ratio2
                .Height = .Height * Ratio2
            End With
    End Sub
    L’Autosize transforme le commentaire en 1 ligne interminable. Pour avoir une largeur 1 fois et demie plus importante que la hauteur, il suffit de transformer les propriétés Height et Width :

    On calcule le rapport .Width /.Height et on en calcule la racine. On divise Width par cette racine et on multiplie Height par la même valeur.

    C’est tout.

    Plus besoin de gérer les éventuelles coupures de mots
    Michel Gaboly
    Développeur Excel et VBA


    Pas de question technique par MP, je n’y répondrai pas, utilisez le forum - Merci
    Pensez à ajouter le tag

  6. #6
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    Oo outch oO

    merci beaucoup messieur...

    Bigalo tu m'as coupé ma digestion XD c'est même tiptop... parcequ'en "découpant" mon string (huhu) au final je récupéré un des commentaires de tailles différentes. Pour un ou deux ce n'est pas trop grave mais a partir de 100 ca faisait pas tres propre...

    une fois de plus merci bien tout le monde
    Da vinci Code....


    Code??? qui a dit Code?

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

Discussions similaires

  1. problème avec une variable de type string
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 14h53
  2. Réponses: 6
    Dernier message: 14/02/2007, 21h08
  3. Des " dans une variable de type String
    Par 4lkaline dans le forum Langage
    Réponses: 6
    Dernier message: 06/11/2006, 14h20
  4. convertir une variable de type String en Number
    Par lilbrother974 dans le forum Flash
    Réponses: 13
    Dernier message: 06/09/2006, 08h28
  5. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 19h33

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