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 :

[VBA-E] Limité à 256 caractères ?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut [VBA-E] Limité à 256 caractères ?
    Bonjour à tous,

    J'ai des cellules excel avec parfois des textes de plus de 256 caractères
    Tout va bien si on copie dans le même classeur.
    Mais en cas de copie dans un autre classeur, les textes sont tronqués à 256 caractères par cellule.
    Pouvez vous me confirmer cette limitation.
    Si oui , y a-t-il une solution?
    Merci
    MM

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Fais un copier/collage spécial -> valeur et tu retrouves tout ton texte
    Il ne s'affiche pas mais il y est (!?!)
    En supposant que tu colles ton texte en A1, il te suffit de faire un "=STXT(A1;257;255)" dans une autre cellule et tu verras que c'est ok
    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Merci
    En fait, si on fait un copier-coler entre classeurs, ça marche.
    Mais je sauvegarde une feuille des 4 feuilles d'un classeur.
    Si, un cellule nommée ("machin") dans cette feuille, je la retrouve tronquée.
    Voici le bout de code (tirés par trop fort sur les débutants), il donne bien un classeur avec la feuille voulue, mais avec des cell tronquées.

    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
    On Error GoTo geser
        ThisWorkbook.Activate
        DateBord = Format(Range("date"), "dd-mm-yy")
        Dim NomM As String
        Chemin = ActiveWorkbook.Path
        DadeBord = Range("Date").Value
        NomM = Range("NomMandant").Value
     
        Sheets("SPS").Copy
     
        Application.CutCopyMode = False
     
        ActiveWorkbook.SaveAs Filename:= _
            Chemin & "\Bordereau " & NomM & " " & DateBord & ".xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
     
    Exit Sub
     
    geser:
        ActiveWorkbook.Close False
     
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as essayé de vérifier si le texte n'est pas présent avec mon code ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    bonjour,
    oui, j'ai essayé, et j'ai rien vu.
    j'ai fait "=STXT(A1;100;255)" et on voit la fin du texte, avec la coupure au même endroit.
    c'est peut etre le "save as", ou un pb de DIM ou autre chose ?
    Si vous avez une bonne méthode pour sauvegarder intégralement une feuille d'un dossier dans une autre , merci .
    MM

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je n'ai pas réussi à rendre visible tout le texte. Par contre, si tu nous disais quel est ton but et quelles sont tes contraintes ? Est-il nécessaire que le texte soit visible ? Dans quel but ?
    A+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Si je fais un collage spécial entre classeur, je récupère le texte intégralement.
    La sauvegarde du code ressemble à un copier coller normale.

    Le problème: Exporter une feuille de classeur (de 4 feuilles) pouvant contenir des cellules de texte (> 256 c) dans un autre classeur ne contenant que cette feuille. là, les cellules à texte sont masquées.
    Au final, elle sert de base de données pour une fusion word c'est là que je dois retrouver le texte.
    Le tout fonctionne, dommage de buter sur ce problème.
    merci pour l'aide
    MM

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si c'est pour une fusion et que ton texte peut être récupéré, c'est bien là l'essentiel, non ?
    As-tu essayé d'enregistrer le fichier, de le fermer et de le ré-ouvrir ?
    Quel est le résultat ? (je t'avoue que je ne comprends pas le phénomène)
    A+

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Voila le probleme en entier.
    J'essaie de générer une feuille contenant les données nécessaire à une fusion.
    J'ai une partie de ces données dans les feuilles d' un dossier excel.
    Je place ces données dans une feuille (dont du texte dans des cellules masquées).

    Cette feuille est sauvegardée dans un dossier spécifique identifié (nom - date) pour etre expédiée et complétée ailleurs.
    A la réouverture du dossier, le texte est tronqué.
    (Le but était que la feuille revienne complète, contenant toutes les données.)
    Je ne sais pas comment sauvegarder cette feuille proprement.
    MM

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par Tu
    A la réouverture du dossier, le texte est tronqué.
    Effectivement tronqué ou une partie du texte n'est-elle pas visible ?
    N'as-tu pas la possibilité de répartir ce texte dans plusieurs colonnes "Texte1" et "Texte2" puis, lors de la fusion, indiquer les deux champs consécutivement ?
    A+

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Il est effectivement tronqué.
    une constatation:
    Si, dans le code cité plus haut, je supprime la ligne sheet("SPS").copy,
    Je sauvegarde la totalité du claseur sans tronquage.
    Je voudrais limiter la sauvegarde à la feuille "SPS".
    Comment faire?

  12. #12
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    J'ai un bout de code mochemaisquimarche que je te livre en vrac :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Application.EnableEvents = False
            For Each c In Wks.UsedRange
                On Error GoTo suite
                If Len(c) > 255 Then
                    Wkd.Range(c.Address) = c
    suite:
                End If
                If c.Hyperlinks.Count > 0 Then
                    Wkd.Cells(c.Row, c.Column).Formula = c.Formula
                End If
            Next
            Application.EnableEvents = True
    Le principe c'est de scanner ta feuille source pour voir si tu as une cellule qui fait plus de 255 caractères, et dans ce cas là tu recopies la valeur. Tu mets aussi un application.displayalerts=false en début..

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je réponds à ça
    Citation Envoyé par Tu
    Je voudrais limiter la sauvegarde à la feuille "SPS".
    Tu enregistres le classeur sous son nouveau nom, tu supprimes les feuilles surnuméraires et tu enregistres de nouveau.
    Tu peux supprimer d'abord tes feuilles sur le document principal puis enregistrer sous mais je n'aime pas bricoler mes bases de donnée et préfère faire dans l'ordre indiqué
    A+

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé ta méthode ouskel'n'or, à la main,
    j'ai sauvegardé le total, supprimé les feuilles, mais il y a aussi des macros dans workbook à supprimer (y a une sub_open) et le reste dont on a plus besoin, des userForm .... On arrive enfin a un dossier sans tronquage. Je connais pas bien le VBA je vais essayé d'automatiser tout ça. Si on pouvait m'orienter, pour la sub_open, je vois pas encore comment faire.
    Je pensais pas si compliqué de sauvegarder une feuille.

    merci....à bientôt.
    merci aussi cwain
    MM

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    On peut supprimer les macros par macro mais, cela implique qu'il existe une macro pour le faire. Soit tu peux laisser cette macro dans le classeur duppliqué (aucun invénient) soit tu ne le souhaites pas.
    Je dois avoir le code tout prêt, je regarde
    A+

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    merci,
    je dois au moins supprimer la sub_open dans thisworkbook, elle fait référence à des feuilles supprimées => erreur.

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde dans la FAQ, SilkyRoad a mis le code qui te permet de faire ça. Fais une recherche sur le forum VBA avec "Supprimer" comme mot clé,

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    J'ai des cellules excel avec parfois des textes de plus de 256 caractères
    Tout va bien si on copie dans le même classeur.
    Mais en cas de copie dans un autre classeur, les textes sont tronqués à 256 caractères par cellule.

    j'espère que ce lien pourra t'aider

    http://support.microsoft.com/kb/213548/en-us



    bonne soirée
    michel

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour ton problème spécifique j'ai juste modifié (en vert) le code trouvé à l'adresse indiquée par Michel.
    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
    Sub CopiePlus255CaratèresDansUneCellule()
    
        'Turn off screen updating while the macro runs.
        Application.ScreenUpdating = False
        'xSheet is the sheet we want to copy.
        Set xSheet = ActiveSheet
    
        'Création d'un nouveau classeur
        Application.Workbooks.Add
        'ySheet is the new worksheet.
        Set ySheet = ActiveSheet
    
        'Copy all of the cells on the original worksheet...
        xSheet.Cells.Copy
        '...activate the new worksheet...
        ySheet.Range("A1").Select
    
        '...and paste the copied cells. All cells in the new worksheet
        'now have the correct contents.
        ySheet.Paste
    
        'Clear out the clipboard and select cell A1.
        Application.CutCopyMode = False
        Range("A1").Select
        
        'Enregistrement du fichier contenant la feuille copiée
        'Chemin = "C:\Mes documents\"
        'NouveauNom = "NomDuFichier.xls"
        'ActiveWorkbook.SaveAs Chemin + NouveauNom 
        Application.ScreenUpdating = True
    
    End Sub

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Pour des raisons obscures (pour moi), si je sauvegarde une feuile, le texte des cellules est tronqué à 256 c. Si je sauvegarde le dossier, il n'y a pas de tronquage.
    Je sauvegarde donc le total, je supprime les feuilles inutiles et je fais un test pour sortir de la sub_open avant exécution.
    Vu de l'extérieur, ça donne le résultat cherché, mais c'est vraiment tordu.
    (Je ne sais pas si on peut dire que le problème est "résolu".)
    Si vous avez mieux, je prends.
    Merci à tous.
    MM

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [vba] limite de caractères
    Par "Rone" dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/10/2008, 14h52
  2. Graphique VBA: limite 256 series
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2008, 01h37
  3. [VBA-E]Limite nombre caractères dans TextBox ?
    Par srame dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/04/2007, 11h21
  4. [VBA E] String limité à 200 caractères
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/08/2006, 11h01
  5. Varchar2 limité à 256 caractères (SQLLoader, 9i)
    Par nuke_y dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 09/11/2004, 12h20

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