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 27/10/2011, 15h40   #1
Membre régulier
 
Inscription : février 2007
Messages : 240
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2007
Messages : 240
Points : 78
Points : 78
Par défaut Boucle selon choix utilisateur

Bonjour,

Dans une macro qui transfère les données d'un fichier TXT sur Excel, je bloque sur une boucle

Exemple :

Voici un exemple de fichier TXT :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2     LE BOIS VERT
3
4                                1DUPOND          MARC
5
6
7
8
2     ESPACE JOUETS
3
4                                1DUPOND          MARC
5
6
7
8
2     ALTA AGRICOLE
3
4                                1DUPOND          MARC
5
6
7
8
90000047
Si l'utilisateur souhaite transférer les données de l'entreprise ESPACE JOUETS, comment construire ma boucle afin qu'elle ne prenne en compte que les données entre la ligne 9 (inclus) jusqu'à la ligne 15 (inclus) ?

Merci par avance.

Cordialement.
wyzer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 17h02   #2
Expert Confirmé
 
Inscription : décembre 2007
Messages : 1 908
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 908
Points : 3 708
Points : 3 708
C'est une rupture. Il te faut sauvegarder la dernière donnée client lue, et tant que c'est ton client, enregistrer les données. Sinon, les omettre.

Mais comme il existe plusieurs manière de "transférer un fichier texte", il nous faudrait d'abord savoir comment tu fais. Partant de ton code, on doit pouvoir faire quelque chose. Ex Nihilo, ça va être plus difficille.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 17h18   #3
Membre régulier
 
Inscription : février 2007
Messages : 240
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2007
Messages : 240
Points : 78
Points : 78
Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
'infos : 
'tb2 = données provenant du Fichier TXT
'tb4 = liste des entreprises pour la ComboBox
'tb3 = ce qui va être coller sur la feuille Excel
 
j = 1 'On alimente la ComboBox
For i = 1 To UBound(tb2, 1)
    If tb2(i, 1) = "2" Then
        j = j + 1
        tb4(j, 1) = tb2(i, 3)
        tb4(j, 2) = i
    End If
Next
 
For i = 1 To j
    UserForm1.ComboBox1.AddItem tb4(i, 1)
Next
 
UserForm1.Show
 
'on copie les données qui nous intéressent dans "tb3"
With trame.Sheets("Commande")
        ReDim tb3(dl, 17)
        j = 1
        For i = 1 To dl '<--- ici que je veux lui dire de ne traiter que la partie concernée
            If tb2(i, 1) = "4" Then
                tb3(j, 1) = tb2(i, 3) 'Succursale
                tb3(j, 2) = tb2(i, 7) 'Civ
                tb3(j, 3) = tb2(i, 8) 'Nom
                tb3(j, 4) = tb2(i, 9) 'Prénom
                tb3(j, 5) = tb2(i, 10) 'Date naissance
                tb3(j, 6) = tb2(i + 1, 5) 'Nb chèques
                tb3(j, 7) = tb2(i + 1, 6) 'Valeur chèques
                tb3(j, 8) = tb2(i + 1, 7) 'Part financeur
                tb3(j, 9) = tb2(i, 11) 'N°
                tb3(j, 10) = tb2(i, 12) 'Bis/Ter
                tb3(j, 11) = tb2(i, 13) 'Type
                tb3(j, 12) = tb2(i, 14) 'Voie
                tb3(j, 13) = tb2(i, 15) 'Complément
                tb3(j, 14) = tb2(i, 17) 'CP
                tb3(j, 15) = tb2(i, 18) 'Ville
                tb3(j, 16) = tb2(i, 6) 'Matricule
                tb3(j, 17) = tb2(i, 24) 'E-Mail
                j = j + 1
            End If
        Next
        For i = 1 To dl 'Suppression des zéros
            If tb3(i, 9) = 0 Then
                tb3(i, 9) = ""
            End If
        Next
        .Range("b21:r" & dl + 18).Value = tb3
        .Range("e9").Value = tb2(2, 3) 'Raison sociale
        .Range("j9").Value = tb2(2, 2) 'Code client
        If Not tb2(2, 2) = "" Then 'Clé
            .Range("j10").Value = .Range("m9").Value
        End If
        .Range("e12").Value = Date
        Erase tb2
        Erase tb3
End With
wyzer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 18h23   #4
Membre régulier
 
Inscription : février 2007
Messages : 240
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2007
Messages : 240
Points : 78
Points : 78
C'est bon j'ai trouvé, j'ai utilisé While...Wend
wyzer est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web