Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 01/12/2011, 14h23   #1
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Par défaut Export Excel doubler un enregistrement

J'ai une requète qui me transfert mes données sur Excel.
Comment puis je faire si je veux quand le nombre de pièces est deux (champnbre) écrire deux lignes dans mon fichier excel ?

J'utilise pour le transfert la fonction suivante :

Code :
Set rec = CurrentDb.OpenRecordset("Export Excel liste", dbOpenSnapshot)
Merci d'avance

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 05h23   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonjour,
Boucler sur le nombre de pieces
Code :
1
2
3
4
5
6
7
8
 
Do Until rec.EOF
 ....
 For n = 1 To rec!NbPieces
   ....
 Next n
 ....
Loop
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 08h46   #3
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Merci hélas, mais cela ne veut pas fonctionner.

Voici mon code, il me semble qu'il est pourtant placé au bon endroit avec la variable N déclarée en As Long.

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
 
Set rec = CurrentDb.OpenRecordset("Requete liste", dbOpenSnapshot)
 
Do While Not rec.EOF
   For N = 1 To rec!nombre                         'Permet de dupliquer les enregistrements dont le champ nombre est supérieur à 1
          For J = 0 To rec.Fields.Count - 1
 
            '  .Fields(Index).Type renvoie le type du champ
            '   si c'est un Texte (dbText) nous insérons "'" pour
            '   qu'il soit reconnu par Excel comme du Texte
            If rec.Fields(J).Type = dbText Then
                xlSheet1.Cells(I, J + 1) = "'" & rec.Fields(J)
            Else
                xlSheet1.Cells(I, J + 1) = rec.Fields(J)
            End If
             ' Enrichissements de format aux cellules
        With xlSheet1.Cells(I, J + 1)
            .Font.Size = 12
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).Weight = xlThin
            .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlEdgeRight).Weight = xlThin
            .Borders(xlEdgeRight).ColorIndex = xlAutomatic
            .HorizontalAlignment = xlCenter
        End With
 
        Next J
        I = I + 1
        rec.MoveNext
  Next N
 
    Loop
J'ai mis un msgbox, et ma boucle se fait bien (et le champ nombre est bien pris en compte) mais je ne duplique pas les enregistrements supérieurs à 1. Peut être parce que j'utilise déjà do loop pour enregistrer les enregistrements globaux.

Es ce que l'on peut intercaler plusieurs fonctions do loop ?
Je vais chercher de mon côté.

Merci d'avance

MArcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 09h21   #4
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Voila j'ai trouvé, mon next N était mal placé.

Merci à toi helas

Code :
1
2
3
 I = I + 1
    Next N
        rec.MoveNext
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h48.


 
 
 
 
Partenaires

Hébergement Web