Insérer dans plusieurs colonnes une liste de mot, issu d?un ficher texte grâce a

Résolu
Rox74 Messages postés 30 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 10 février 2011 - 9 avril 2008 à 17:06
Rox74 Messages postés 30 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 10 février 2011 - 10 avril 2008 à 22:20
Bonsoir  à tous,

Je suis " TRES" débutant en VBA et j'aurais besoin d'aide. Ce que je recherche avant tout c'est une aide bien commentée, pour que dans le futur je puisse me débrouiller de plus en plus tout seul.

Donc voila mon problème d'aujourd'hui :

Je voudrai que mon programme lance pour une seule fois, grâce à bouton, une liste de mot contenue dans un fichier texte.
Sachant que ma liste de mot dépasse le nombre de ligne autorisées d'une colonne, je voudrai que lorsque la colonne "A" est replie la liste continue dans la colonne "B" et ainsi de suite. De plus mes colonnes ne doivent pas commencer à la ligne "1 " mais "10".

Ce que j'ai fais:

j'ai trouvé ma liste de mot en " *.txt", les mots sont écris les uns en dessous des autres.
j'ai ouvert Excel et créé un bouton.

Et je suis bloqué,

Si une âme charitable passe sur mon message et quelle veut bien perdre un peu de son temps pour m’aider se serait super.


Merci d’avance


RoX

6 réponses

Rox74 Messages postés 30 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 10 février 2011
10 avril 2008 à 22:20
Bonsoir a tous

Merci de l'attention que vous avez porté à ma question.

Faucheuse: je sais pas si ton code fonctionne, j'ai essayé mais un message d'erreur synthaxe apparaissait ( avec le Loop).

Donc j'ai continué d'écrire des truc avec offset  ( ;-) faucheuse) et j'ai fini par trouvé.

Voila le code

Private Sub CommandButton1_Click()
 Range("A10", "D65536").ClearContents  'Efface le contenue des cellules entre la "A10" et la "G10".
              
               Dim MC As Range              ' Cellule Courante pour stockage dans la feuille principale.
              
               Set MC = Range("A10")        ' Attribue la cellule "A10" à ma cellule courante.
             
Open "chemin du fichier " For Input As #1
 
                i = 0                       'Départ en ligne 0 car inscription cellule "A10"
                j = 0                       'Départ en colonne 0 car inscription cellule "A10"
               
                Do While Not EOF(1)         ' Effectue la boucle jusqu'à la fin du fichier.
                    Line Input #1, temp     ' Lit la ligne dans la variable.
                                        If i 65527 Then j j + 1    ' Si i à la valeur 65527 (derniere ligne de la colonne) alors décalage d'une colonne.                    If i 65527 Then i 0        ' Si i à la valeur 65527 alors i reprend du début ( la ligne 10)
                    MC.Offset(i, j).Value = temp   ' Ecriture de la ligne du fichier texte dans la cellule décalée de i et de j par rapport à la cellule MC (ici "A10")
                    i = i + 1                      'l'ancienne valeur de i se voit augmentée de 1 pour le passage de boucle suivant
                   
                Loop                               'renvoit à la ligne "Do.." , permet de faire une boucle
                  Close #1                         'permet de fermer le fichier texte
End Sub

Voila j'espère que ce code pourra etre utile à d'autres personnes

Je pense que je peux mettre réponse acceptée.


bonne soiré aplussstardesss

RoX


ps: si des personnes ont des commentaires a faire sur le code, je prends  toutes les remarque sont constructives
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 avril 2008 à 19:45
Salut
Décompose ce que tu as à faire et cherche de l'aide dans le forum ou les sources pour chacun :
- Créer une macro
- Ouvrir un fichier texte (Open)
- Se positionner sur cellule de la colonne X, ligne Y
- Faire un boucle de lecture des lignes du fichier (Do While EOF-Loop), donc lire une ligne du fichier (Line Input #)
- Se décaler d'une ligne sur ta feuille
- Tester si tu as atteint la ligne maximum (If)
- Changer de colonne X+1 et revenir à la ligne Y
- Refermer le fichier (Close #)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
10 avril 2008 à 11:15
Ya combien de mots?
Par ce que ya tout de meme pres de 65000 lignes dans une colonne
0
Rox74 Messages postés 30 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 10 février 2011
10 avril 2008 à 13:28
Bonjour,

merci jack pour la démarche

Ma liste contient énormément de mots. C'est le dictionnaire francais  ( environ 200 000 plus ou moin 50 000 je crois).
Je pense (et j'espère) qu'il me faudrait 4 colonnes.

J'ai trouvé un code ( que j'ai pas tout tout compris) qui m'ouvre une fenetre me permaitant de choisir mon fichier.
Mais ce dernier n'inscrit les 65536 premiers mots que  une colonne et se bloque appres ( error "1004") donc je dois le modifier.
 Voici une partie du code  ( cette partie je l'ai comprise et commentée)

  Open chemin For Input As #1
                i = 0
               
                Do While Not EOF(1)                           ' Effectue la boucle jusqu'à la fin du fichier.
                    Line Input #1, temp                            ' Lit la ligne dans la variable.
                    Range("A10").Offset(i, 0).Value = temp     ' "copie" la valeur lut dans la cellule (i, 0) a partir de la cellule A 10.
                    i = i + 1                                                        ' valeur de i a chaque lecture d'une nouvelle ligne du fichier texte
                    
                                                                                         ' modif a faire pour dire quand i = 65537 inscrire valeur a partir
                                                                                           de la nouvelle cellule B10

                    
                 
               Loop                                                               ' continue la boucle jusqu'à la fin du fichier
                Close #1                                                          ' Ferme le fichier

mais comment faire pour ecrire la modif en language VBA.
j'ai essayer quelques trucs mais sans résultats.
j'ai pensé a quelque chose comme ca
 
Open chemin For Input As #1
                i = 0
                j = 0
               
               
                Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
                    Line Input #1, temp    ' Lit la ligne dans la variable.
                    Range("A10").Offset(i, j).Value = temp
                    i = i + 1
                      If  i 65526  Then  i 0 And j =  1

le probleme c'est que j'ai bien plus ma liste qui s'affiche mais les 65536 premier mots sont effacés par les 65536 mots suivant et ainsi de suite. 

Je n'ai pas de décalage de colonne

 Donc je cherche, je cherche et je trouverai
Surement grace au forum et a vous.

RoX
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
10 avril 2008 à 13:41
Avant d'essayer compliquer avec des offset (compliquer pour moiXD, je l'apprend sur ce post)
Moi j'essaierai quelque chose du genre quand on arrive a 65525, on fait une nouvelle boucle pour la colonne B (et apres j'essaierai d'ameliorer) :

i = 1
open "chemin" for input as 1
Do While Not EOF(1)
input #1, text
Range("A" & i).value = text

If (i>65525) then
Range("B" & i) = text
loop
close #1
0
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
10 avril 2008 à 13:49
euuh, j'ai mal initialiser i, ici i = 10... gomen
0
Rejoignez-nous