Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2011, 09h24   #1
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 26
Points : 26
Envoyer un message via MSN à mennix
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 :
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
mennix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 10h46   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Ce ne serait pas plutôt ça que tu cherche ?
Code :
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 :
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/09/2011, 14h37   #3
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 26
Points : 26
Envoyer un message via MSN à mennix
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
mennix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 17h09   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 09h02   #5
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 26
Points : 26
Envoyer un message via MSN à mennix
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
mennix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 12h30   #6
Membre éclairé
 
Avatar de tototiti2008
 
Inscription : octobre 2008
Messages : 327
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 327
Points : 320
Points : 320
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 :
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
__________________
tototiti2008 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 13h59   #7
Nouveau Membre du Club
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 26
Points : 26
Envoyer un message via MSN à mennix
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
mennix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h33.


 
 
 
 
Partenaires

Hébergement Web