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 :

Chaîne de caractère, le plus grand ? Aidez-moi [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Par défaut Chaîne de caractère, le plus grand ? Aidez-moi
    Salut

    pour faire simple
    voila

    dans la colonne A y'a deux cellules.
    la première A1= "iiiiiiiiiiii" ==> Méthode Len renvoi : 12
    la deuxième A2= "mmmmmm" ==> Méthode Len renvoi : 6
    Automatiquement vous me dite que A1 > A2
    mais mois je vous dit que vue d’œil A2 > A1 , pare ce que A1 fait environ 1.2 cm et A2 fait plus que ça environ 2.1 cm

    ce que je vous dire:
    je cherche une méthode en préférence qu'elle soit trop simple qui renvoi la taille d’après leur taille en cm ou bien pixel ou bien point
    ce que vous voulez mais faite en sort que le résultat soit A2 > A1

    UN Grand MERCI d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Voir aide en ligne len renvoi le nombre de caractères d'une chaîne et pas sa largeur ...


    pour ta cellule comment en définit tu sa largeur ? est elle égale à la largeur occupée par tes caractères ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Une façon de faire serait de mettre un Textbox sur ta feuille avec la propriété Autosize à True.
    Et utiliser une macro comme celle-ci

    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
        Dim I As Long, nbLignes As Long
        Dim Ligne As Long, Largeur As Long
     
        ActiveSheet.TextBox1.AutoSize = True
     
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
        For I = 1 To nbLignes
            ActiveSheet.TextBox1 = Range("A" & I)
            If Largeur < ActiveSheet.TextBox1.Width Then
                Ligne = I
                Largeur = ActiveSheet.TextBox1.Width
            End If
        Next
     
        MsgBox "Le texte le plus long est " & Range("A" & Ligne) & " à la ligne " & Ligne & " de largeur " & Largeur

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Une piste (au plus simple) avec le code suivant à copier dans un module Standard
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub aa()
    Dim S As Worksheet
    Dim R As Range
    Dim R2 As Range
    Dim C As Range
    Dim T()
    Dim cpt&
    '--- Copie la plage des données en colonne A ---
    Set R = Range("a1:a" & [a1].End(xlDown).Row & "")
    R.Copy
    '--- Préparation de la plage d'inscription des résultats ---
    Set R2 = R.Offset(0, 1)
    ReDim T(1 To R2.Rows.Count, 1 To 1)
    '--- Colle (transposé) dans une nouvelle feuille ---
    Set S = Sheets.Add
    S.[a1].PasteSpecial Paste:=xlPasteAll, Transpose:=True
    '--- La plage des données collées et AutoFit de ses colonnes ---
    Set R = S.[a1].CurrentRegion
    R.Columns.AutoFit
     
    '--- Explore chaque cellule et monte la largeur (en points) dans un tableau ---
    For Each C In R
      cpt& = cpt& + 1
     
      'Range.Width , propriété (extrait de l'aide)
      'renvoie une valeur de type Variant qui représente
      'la largeur de la plage, estimée en points.
      T(cpt&, 1) = C.Width
     
    Next C
    '--- Supprime la nouvelle feuille ---
    Application.DisplayAlerts = False
    S.Delete
    Application.DisplayAlerts = True
    '--- Inscrit les résultats en colonne B ---
    R2 = T
    End Sub
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Par défaut Merci Infiniment Mr PARMI
    Merci Infiniment Mr PARMI

    Un Expert Confirmé c'est pas pour rien.
    que ta 6ème étoile brille très prochainement, et illuminera ta vis de bonheur et de prospérité.

    Pour Mr bbil je crois que tu peut nous laisser un peu du temps avant de nous faire catapulter dans le NET,
    mais tu a droit un petit merci comme même.

    Un Grand MERCI pour developpez.net

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu solution bien plus simple est
    Bonjour même si c'est résolu
    je fait souvent de la conversion excel to html et je me sert d'une simple opération
    regarde ce tableau a droite c'est les points quasi la taille des font Excel a gauche l'équivalent en px
    trouve l'operateur et multiplie le par le nombre de caractères
    Pièce jointe 182805
    Au plaisir

    maintenant c'est vrai que autofit est une bonne solution
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. plus grand caractère possible
    Par wizzy dans le forum Débuter
    Réponses: 5
    Dernier message: 28/11/2007, 22h13
  2. Réponses: 2
    Dernier message: 16/04/2007, 12h53
  3. Réponses: 2
    Dernier message: 20/02/2007, 11h29
  4. Meilleur algorithme pour trier de très grandes quantités de chaînes de caractères
    Par Cecilka dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/05/2006, 12h23

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