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 :

Import de donnée de plus de 920 caracteres


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut Import de donnée de plus de 920 caracteres
    Bonjour,
    Je tourne en rond sur internet afin de resoudre mon probleme, mais je galere un peu.

    L'idée est un tableau STRING ayant plus de 1000 caracteres, ce tableau est renvoyé sur une feuille excel, mais ca coince, en dessous de 900 caracteres, c'est ok mais au dela, j'ai une erreur, y a-t-il un moyen de réaliser cette routine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub gdf()
    Dim data() As String
    ReDim data(1 To 2, 1 To 2)
     
    'data = Feuil1.Range("A1:A2")
     
    data(1, 1) = String(920, "*")
     
    Feuil1.Range("A1:A2") = data
     
     
    End Sub
    Merci par avance.
    t

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ce ne serait pas plutôt ça que tu cherche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub gdf()
     
        Dim data() As String
        ReDim data(1 To 2)
     
        'data = Feuil1.Range("A1:A2")
     
        data(1) = String(920, "*")
        data(2) = String(920, "*")
     
        Feuil1.Range("A1:A2") = data
     
    End Sub
    Tu déclare un tableau à deux dimensions (ReDim data(1 To 2, 1 To 2) ce qui fait 4 "cellules") mais tu n'utilise qu'une "cellule" de ce tableau et ensuite tu veux l'affecter à un range ("A1:A2") qui n'est pas de même dimension. Soit if faut faire comme le code plus haut pour un range ("A1:A2"), soit comme ci-dessous pour un range ("A1:B2") :
    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
     
    Sub gdf()
     
        Dim data() As String
        ReDim data(1 To 2, 1 To 2)
     
        'data = Feuil1.Range("A1:A2")
     
        data(1, 1) = String(920, "*")
        data(1, 2) = String(1020, "*")
        data(2, 1) = String(1120, "*")
        data(2, 2) = String(1220, "*")
     
        Feuil1.Range("A1:B2") = data
     
    End Sub
    Hervé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Merci pour la réponse Hervé,
    J'ai testé les deux Subs, meme erreur sous excel, maintenant ca vient peut etre de la version "Excel 2002"

    Mon code du début fonctionne sans souci , si tu remplaces 920 par 900, malheuremsent, tes deux exemples avec les valeurs des STRINGS, ca coince, néanmoins, si je remplace 1220,1120,1020 par 900, ca marche, mais au dela!! plantage Excel.

    Ce module fonctionne chez toi ? sans quoi , cela provient de ma version d'excel tout simplement ou de la mémoire sais pas trp la.
    t

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Je suis sous Excel 2007 c'est probablement pour cette raison que ça fonctionne chez moi. Je n'ai pas 2002 pour tester, désolé.

    Hervé.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Je testerais sur un Excel 2007, celui de la maison, le 2002 est malheureusement celui du Travail, dc tributaire des admins.

    Je te confirmerais lundi, si également ss Excel 2007, les modules précedents fonctionnent.

    Merci.
    t

  6. #6
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 911
    Points : 1 691
    Points
    1 691
    Billets dans le blog
    2
    Par défaut
    Bonjour mennix, Bonjour Theze,

    ça plante aussi en XL2003, et ça a l'air d'être spécifique à l'affectation des valeurs d'un tableau à une plage, car le code là fonctionne, lui

    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
    Sub gdf()
     
        Dim data() As String
        ReDim data(1 To 2, 1 To 2)
     
        data(1, 1) = String(920, "*")
        data(1, 2) = String(1020, "*")
        data(2, 1) = String(1120, "*")
        data(2, 2) = String(1220, "*")
     
        For i = LBound(data, 1) To UBound(data, 1)
            For j = LBound(data, 2) To UBound(data, 2)
                Cells(i, j) = data(i, j)
            Next j
        Next i
     
    End Sub
    Bizarrement, la limite semble être à 912 caractères (ça marche jusque 911)
    Drôle de valeur, 911.... Porsche ?

    Edit : Et je confirme aussi que chez moi, le code proposé par Theze fonctionne sur 2007

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Points : 67
    Points
    67
    Par défaut
    Merci tototiti2008, pour le test,

    Le seul moyen qui me reste a disposition, est de remplir les cellules via "Cell.value", mais je vais resté bloqué a mes 911 caracteres, car l'autre methode est bien trop longue, quand tu as plus de 50000 lignes et 70 colonnes.

    Merci qd meme, je n'ai plus qu'a attendre qu'a mon travail, ils veuillent bien qu'on passe a un excel 2007 voir 2010, ideal, je ne serais plus limité a 65535 lignes.

    Cordialement
    t

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/05/2014, 16h13
  2. [phpMyAdmin] Importation de données d'une table vers une autre table ayant plus de colonnes
    Par patrmich dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 16/05/2014, 22h00
  3. Réponses: 0
    Dernier message: 25/11/2009, 10h51
  4. [langage] pas plus de 1024 caractères?
    Par Kinethe dans le forum Langage
    Réponses: 8
    Dernier message: 15/07/2004, 12h50
  5. Importation de données postgresql
    Par ythierrin dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 10/10/2003, 23h18

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