Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2560 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Cellule qui sature sous Excel & VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cellule qui sature sous Excel & VB

n°1319899
Sprotch1
Posté le 07-03-2006 à 05:29:29  profilanswer
 

J'ai un soucis avec une cellule excel qui semble dépassée par la quantité de caractères que je veux y mettre.
 
Du coup je pense utiliser une zone de texte, mais je ne sais pas quelle syntaxe utiliser en VBA pour coller le contenu d'une chaine de caractères dans ma zone.
 
Quelqu'un connait cette syntaxe ou aurait une idée pour éviter que ma cellule ne sature ?

mood
Publicité
Posté le 07-03-2006 à 05:29:29  profilanswer
 

n°1319929
tegu
Posté le 07-03-2006 à 09:49:35  profilanswer
 

L'information pertinente qui manque est la longueur de la chaine que tu veux coller dans la cellule.
Si tu nous expliquais aussi quelle méthode tu utilises pour remplir la cellule (code VBA, VB6 + OLE Automation ?) ça pourrait aider.

n°1320651
Sprotch1
Posté le 08-03-2006 à 00:22:39  profilanswer
 

J'utilise du VBA de base, c'est une macro sous excel.
La taille de ma chaine de caractère varie pas mal, disons 1500 caractères au pire.
 
La méthode justement je l'ai pas, j'ai ma zone de texte et je voudrais la methode pour mettre le contenu de ma variable dedans.

n°1320719
tegu
Posté le 08-03-2006 à 09:34:50  profilanswer
 

Là je ne comprends pas, puisqu'une cellule Excel accepte sans problème une chaine de caractère de longueur 1500.
Dans le doute j'ai fait un essai tout bête et ça fonctionne (note le 15 000 et pas seulement 1 500).

Dim f As Worksheet
Set f = Application.ActiveSheet
f.Cells(1, 1) = String(15000, "e" )


Va falloir creuser plus profond

n°1321444
Sprotch1
Posté le 08-03-2006 à 22:40:30  profilanswer
 

Hmmm je connais pas du tout cette façon de faire donc j'ai tenté.
 
Ca me file un message d'erreur "erreur d'éxécution 1004. Erreur définie par l'application ou par l'objet".
 
La ligne correspondante est :
 
"f.Cells(2, 294) = String(15000, str_listing)"
 
J'ai juste changé la position de la cellule et mis la variable contenant ma chaine de caractères a la place de la tienne. j'ai fait une bourde ?
Désolé je suis pas doué en VBA... :-\
Merci de ton aide.

n°1321478
juju2k
Posté le 08-03-2006 à 23:24:52  profilanswer
 

dans le code de tegu, on insère une chaîne qui comporte 15 000 lettres 'e'. Toi, tu essayes d'insérer une chaîne qui comporte 15 000 fois ta chaîne str_listing (qui doit déjà comporter pas mal de caractères...).
Mais je ne pense pas que ton problème vienne de là : on ne peut pas dépasser le nombre de 256 colonnes (en-tête de colonne "IV" ). Donc tu vas déjà trop loin avec 294...


Message édité par juju2k le 08-03-2006 à 23:29:56
n°1321518
Sprotch1
Posté le 09-03-2006 à 02:47:13  profilanswer
 

OK, j'avais inversé colonnes et lignes... (on va y arriver). Mon code est donc :
 
Set f = Application.ActiveSheet
f.Cells(295, 3) = String(1, str_clauses)
 
Sauf qu'il ne m'affiche qu'un "A" dans la cellule maintenant ("A" qui est bien la première lettre de ma chaine de caractère)...

n°1321519
Sprotch1
Posté le 09-03-2006 à 02:49:06  profilanswer
 

Notes que si je met
 
String(2, str_clauses) à la place du 1 il me met "AA".
 
On tient une piste :-)

n°1321635
tegu
Posté le 09-03-2006 à 10:48:35  profilanswer
 

Ça peut vouloir dire que ta chaine contient un caractère spécial interprété par Excel et qui te fout le boxon.
Ça peut aussi vouloir dire que str_clauses ne contient que "A".

n°1322129
juju2k
Posté le 09-03-2006 à 20:08:38  profilanswer
 

En jetant un oeil dans l'aide de VBA, on se rend compte que la fonction String(number, character) ne prend en compte qu'un seul caractère. Dans le cas où on pointe sur une chaîne, seul le premier caractère de la chaîne est répété "number" fois.
 
edit : l'aide de VBA est assez complète (pareil pour Excel d'ailleurs). Faut pas hésiter à jeter une oeil à celle-ci une fois qu'on se fait orienter (sur le forum par exemple :) ) vers la fonction qui nous intéresse  ;)


Message édité par juju2k le 09-03-2006 à 20:11:30
mood
Publicité
Posté le 09-03-2006 à 20:08:38  profilanswer
 

n°1322436
Sprotch1
Posté le 10-03-2006 à 01:29:02  profilanswer
 

Oui oui mais l'aide ne donne pas grand chose sur Application ou Cells... C'est trop général. Et les tutoriaux que j'ai trouvé sur ebay ne donnent rien.
 
Si on partait avec l'option qu'on a vu au début : faire une zone de texte et mettre la variable dedans, du coup on a plus à se préoccuper de ce que la cellule accèpte... Mais je ne connais pas la syntaxe definissant une zone de texte, ni ses méthodes.
 
Désolé, j'y connais vraiment rien en vba... Merci de votre aide en tous cas.

n°1324734
Sprotch1
Posté le 14-03-2006 à 00:55:30  profilanswer
 

Bon ben j'ai rééssayé deux ou trois trucs et rien...
 
Est-ce que quelqu'un sait quelle méthode employer pour coller le contenu d'une variable type string dans une Zone De Texte en VBA ?

n°1325325
juju2k
Posté le 14-03-2006 à 18:31:18  profilanswer
 

Ne connaissant pas la méthode, j'ai utilisé l'enregistreur de macro. J'ai pu en faire ça :
 

Dim Chaine As String
 
    Chaine = "salut comment ça va ssssssssssssss?"
    ActiveSheet.Shapes("Text Box 1" ).Select
    Selection.Characters.Text = Chaine


Tu peux remplacer "Text Box 1" par le nombre 1, qui correspond à la première forme créée sur ta feuille.

n°1329917
Sprotch1
Posté le 22-03-2006 à 01:52:20  profilanswer
 

Aah aaaah ? Eh ben non...
J'ai mis exactement :
 
 
Dim str_texte As String
[...]
ActiveSheet.Shapes("zone_texte_1" ).Select
Selection.Characters.Text = str_texte
 
(avec str_texte ma variable contenant le texte et zone_texte_1 ma zone de texte).
 
La zone de texte reste désespérement vide...

n°1329919
Sprotch1
Posté le 22-03-2006 à 02:05:10  profilanswer
 

Ah par contre en essayant avec une plus petite chaine de caractère que la mienne, j'arrive bien à mettre le contenu dans la zone de texte... Donc la methode est bonne mais ma chaine a toujours l'air trop grande... je commence à ne plus rien comprendre.

n°1329922
Sprotch1
Posté le 22-03-2006 à 03:07:57  profilanswer
 

Bon alors après quelques investigations...
 
La methode donnée par Juju2K fonctionne bien pour afficher du texte, mais ma variable est formée par la concaténation de contenus de diverses cellules, elle-même étant le résultat de concaténations d'autres cellules...
 
J'ai repris pas à pas et j'arrive à afficher le début de mon texte en ajoutant contenu de cellule par contenu de cellule... Et au bout d'un moment il n'affiche plus rien. Quand j'ajoute le contenu de la 7ème cellule rien ne s'affiche dans la zone de texte. Ou plutot elle apparait vide.
 
Quand j'essaye d'afficher le contenu seul de cette 7ème cellule, ça marche.
 
Donc résumons :
 
Affichage de la concaténation du contenu des 6 premières cellules ça marche.
Affichage du contenu de la 7ème cellule ça marche.
Affichage de la concaténation du contenu des 7 cellules ça marche pas.
 
Une idée ?

n°1330553
juju2k
Posté le 22-03-2006 à 21:03:01  profilanswer
 

Si tu diminues le contenu des six premières cellules, est-ce que t'arrives à insérer celui de la septième cellule ?
(C'est pour voir si c'est une question de caractères max dans une zone de texte...)

n°1330741
Sprotch1
Posté le 23-03-2006 à 04:47:47  profilanswer
 

Après quelques tests il semble que ce soit a cause des concatenations successives que la zone de texte refuse de se remplir, ou à cause de la longueur du texte (mais ça me parait plus étrange donc je pense plutot à la première raison)
 
J'ai essayé de passer le contenu de mes cellules en dur :
 
        str_1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
                       Range("Variables!E1111" ) & _
                       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
                       Range("Variables!H1100" ) & _
                       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
                       Range("Adresse" ) & _
                       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
Ca marche comme ça, mais si je rajoute un "a" ça ne marche plus.
 

n°1331270
juju2k
Posté le 23-03-2006 à 18:51:07  profilanswer
 

Tu veux dire, si tu rajoutes un "a" de cette manière :

...aaaaaa" & "a"


n'est-ce pas ? (par opposition au rajout d'un "a" comme ça dans la chaîne "aaaaa...aa" )
 
Si c'est une question de quantité de concaténations successives, tu remplies ta variable en plusieurs fois et tu seras fixé...


Message édité par juju2k le 23-03-2006 à 18:51:40

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Cellule qui sature sous Excel & VB

 

Sujets relatifs
excel verifier quantité inventaire factureCode pour Macro sous Excel
[RESOLU]Créer une instance Excel à partir de Word 97 ou 2003Empêcher de fermer une UserForm sous VBA (Excel)
Fonction RechercheV sous VB Excel[.NET & COM] Gérer Excel à partir de .NET 2005
[EXCEL] Fonction chronométragefonction array sous VB pour excel
[Resolu] Excel acceder en lecture ou modification[vbScript] [Excel] probleme graphique
Plus de sujets relatifs à : Cellule qui sature sous Excel & VB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR