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 :

Macro : perte de données (texte) pendant l'enregistrement [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Macro : perte de données (texte) pendant l'enregistrement
    EDIT : Je viens de voir que j'ai posté dans la mauvaise section, mes excuses t_t


    Bonjour,
    dans le cadre de mon nouveau poste, je dois m'occuper de la correction de divers bugs sur des macros Excel 2k3 déjà existantes.

    Ces macros servent à la création de rapports/certificats, les opérateurs ont donc parfois besoin d'ajouter des commentaires plus ou moins long (parfois, une page complète de texte dans une cellule fusionné de la taile d'une feuille A4). J'ai vu qu'il éxistait une limitation d'affichage des caractères/cellule dans Excel:
    -255/lignes
    -1024 caractères affichés / cellules
    source : http://office.microsoft.com/fr-ca/ex...005199291.aspx


    Dans le cas où les opérateurs placent une page entière de texte, je comprends que la disparation de ces caractères peut provenir de ces limitations. Par contre, même 3-4 lignes de textes (avec des tab et Alt+Entrée pour la mise en forme) se retrouvent tronquées lors de l'enregistrement.

    Les cellules sont au format standard, j'ai essayé de les passer en texte, j'obtiens le même résultat.

    L'enregistrement s'effectue de la manière suivante (en macro) :
    Le fichier Excel est copié/collé entièrement dans un autre répertoire, puis les boutons de macros et le code sont supprimés.

    Mes questions sont donc :

    Les caractères "spéciaux" du type "tabulation" ou "retour chariot" comptent-ils comme plusieurs caractères ? Ce qui pourrait justifier les textes plus petits tronquées à la sauvegarde.

    Est-il possible de contourner cette limitation de manière "ergonomique" pour les opérateurs ?

    Et une petite question bonus, qui me fait aussi perdre quelques cheveux :

    Dans ces macros, il y a une copie (depuis un fichier .xls de donnée) d'un numéro de série (commencant par 0) vers le certificat. Les cellules sources et destination sont au format "Texte" par défaut, mais suite au "copier/coller" effectué par la macro, la cellule passe au format "Chiffre" et perd donc le 0, une solution ?

    J'ai essayé d'exposer les problèmes au mieux, mais je reste ouvert à vos questions

    Merci

    Cordialement

    PS :
    -je n'ai pas développé ces macros
    -le developpeur n'est plus dans l'entreprise
    -je ne peux en aucun cas joindre ces macros, uniquement des bouts de code (même si ca n'est pas vraiment sensible)
    -je fais du VB/Excel depuis moins d'un mois

  2. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonsoir.

    Les caractères "spéciaux" du type "tabulation" ou "retour chariot" comptent-ils comme plusieurs caractères ?
    Oui. Chaque caractère est compté.
    Est-il possible de contourner cette limitation de manière "ergonomique" pour les opérateurs ?
    Oui. Sans toucher aux cellules sources. Dans une autre région ou sur une autre feuille de calcul.Un jonglages de formules pour renvoyer les portions de texte proches aux limites d'affichage. La plupart des utilisateurs avancés préfèrent gérer les problèmes de texte avec une macro.

    -je fais du VB/Excel depuis moins d'un mois
    Te recommande donc la solution des formules (que tu pourras entretenir) avec une feuille que tu masqueras. Remarque tout de même qu'avec du code c'est aisé.

    Et une petite question bonus, qui me fait aussi perdre quelques cheveux :

    Dans ces macros, il y a une copie (depuis un fichier .xls de donnée) d'un numéro de série (commencant par 0) vers le certificat. Les cellules sources et destination sont au format "Texte" par défaut, mais suite au "copier/coller" effectué par la macro, la cellule passe au format "Chiffre" et perd donc le 0, une solution ?
    Ce qui me trouble également. En principe par défaut le copier/coller de cellules sans instructions attachées te ramène la cellule telle qu'elle est formatée. A moins qu'une instruction, de conversion ne suive le copiage.

  3. #3
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    J'ai vu que tu avais cette remarque:
    Dans le cas où les opérateurs placent une page entière de texte, je comprends que la disparation de ces caractères peut provenir de ces limitations. Par contre, même 3-4 lignes de textes (avec des tab et Alt+Entrée pour la mise en forme) se retrouvent tronquées lors de l'enregistrement.
    Cela peut se régler avec l'alignement Horizontal HAUT pour les lignes tronquées.
    Ou vertical pour les textes de ligne.

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut
    Bonjour,

    après avoir discuté avec les opérateurs, j'ai compris que ce qui les gênait c'était surtout de ne pas vraiment savoir quand à lieu la coupure (pour qu'ils savent quand ils doivent modifier le fichier derrière)

    du coup j'ai uilisé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Application.Intersect(Target, Range("A77:A83")) Is Nothing Then
            On Error Resume Next
            For Each c In Target
                If Len(c) > 256 Then
                    MsgBox ("Le texte est supérieur à 256 caractères")
                End If
            Next c
        End If
    End Sub
    Ca leur convient et ca m'évite de trop me compliquer la vie

    Par contre pour la question bonus j'ai revérifié suite à ton message et actuellement le code fait exactement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rapport.Range("E24").Value = fsort.Range("A4").Value
    Du coup c'est plus la récupération de la valeur d'une "variable" que l'ont met dans une autre variable.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fsort.Range("A4").Copy
    rapport.Range("E24").PasteSpecial
    Devrait peut-être mieux fonctionner
    Merci

    EDIT: Après un test, ca fonctionne, je marque donc le sujet comme résolu

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

Discussions similaires

  1. VBA - Perte de données suite enregistrement en CSV
    Par la_caisse dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/04/2014, 18h12
  2. [XL-2007] MACRO : Extractions base de données texte, recherche multicritères avec interrogation
    Par Moi9999 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 18/04/2012, 10h17
  3. [XL-2002] Message "Pour éviter la perte de données.." apres un RefreshStyle par macro
    Par Williamm dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/08/2011, 11h35
  4. [JTable] Perte des données
    Par david71 dans le forum Composants
    Réponses: 8
    Dernier message: 09/01/2005, 00h37
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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