Export de données vers des tableaux

24 réponses
Avatar
Apitos
Bonjour =E0 tous,

Dans un classeur, j'ai une BDD depuis laquelle j'aimerais exporter des donn=
=E9es vers des tableaux situ=E9s dans d'autres feuilles dans le m=EAme clas=
seur.

Les tableaux sont de structures diff=E9rentes dans les colonnes.

Par exemple:

- En feuil2, "Groupes =E9lectrog=E8ne" =E0 4 colonnes et "Ondulaires" =E0 5=
colonnes.

- En feuil3, "Ateliers d'=E9nergie" =E0 5 colonnes et "Batteries de l'ateli=
er" =E0 4 colonnes.

Comment peut-on g=E9n=E9raliser le traitement dans une seule boucle.


Le classeur en pi=E8ce jointe.

http://www.cjoint.com/c/EFtrAL0Rhyd

Merci d'avance.

10 réponses

1 2 3
Avatar
Jacquouille
Bonjour
Je n'y connais absolument rien en BDD, mais je me demande si, en nommant tes
colonnes ou tes plages, tu n'y aurais pas accès, quelle que soient leurs
positions

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Bonjour à tous,

Dans un classeur, j'ai une BDD depuis laquelle j'aimerais exporter des
données vers des tableaux situés dans d'autres feuilles dans le même
classeur.

Les tableaux sont de structures différentes dans les colonnes.

Par exemple:

- En feuil2, "Groupes électrogène" à 4 colonnes et "Ondulaires" à 5
colonnes.

- En feuil3, "Ateliers d'énergie" à 5 colonnes et "Batteries de l'atelier" à
4 colonnes.

Comment peut-on généraliser le traitement dans une seule boucle.


Le classeur en pièce jointe.

http://www.cjoint.com/c/EFtrAL0Rhyd

Merci d'avance.


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Apitos
Bonjour Jacquouille,

Les colonnes sont fixes quelle que soit la plage nommée, ensuite il faut boucler sur cette plage nommée...
Avatar
DanielCo
Bonjour,
Le mmoyen le plus simple consiste à mettre les mêmes entêtes sur la
base et sur les tableaux cibles.
Cordialement.
Daniel


Bonjour à tous,

Dans un classeur, j'ai une BDD depuis laquelle j'aimerais exporter des
données vers des tableaux situés dans d'autres feuilles dans le même
classeur.

Les tableaux sont de structures différentes dans les colonnes.

Par exemple:

- En feuil2, "Groupes électrogène" à 4 colonnes et "Ondulaires" à 5 colonnes.

- En feuil3, "Ateliers d'énergie" à 5 colonnes et "Batteries de l'atelier" à
4 colonnes.

Comment peut-on généraliser le traitement dans une seule boucle.


Le classeur en pièce jointe.

http://www.cjoint.com/c/EFtrAL0Rhyd

Merci d'avance.
Avatar
Apitos
Bonjour Daniel,

C'est cette structure qui m'est exigée pour remplir les tableaux.
Avatar
DanielCo
Je m'en doutais un peu... Alors, pour chaque entête de chaque tableau,
peux-tu donner le nom de l'entête de la base de donées ?
Daniel


Bonjour Daniel,

C'est cette structure qui m'est exigée pour remplir les tableaux.
Avatar
Apitos
Correspondance des entêtes Tableaux - BDD :

http://www.cjoint.com/c/EFumS7iQRFQ
Avatar
DanielCo
Voici le début de la macro. J'ai traité Feuil1. Reproduis le traitement
pour les autres feuilles.
Option Base 1
Sub Export()
Dim F1_1 As Variant, F2_1 As Variant, F3_1 As Variant, F4_1 As Variant,
Sh As Worksheet
Dim F1_2 As Variant, F2_2 As Variant, F3_2 As Variant, F4_2 As Variant
Dim L1 As Long, L2 As Long, L3 As Long, L4 As Long
Dim Plage As Range, C As Range
L1 = 4: L2 = 4: L3 = 4: L4 = 4
Set Sh = Sheets("BDD")
With Sheets("BDD")
F1_1 = Array("Site", "Fournisseur", "Capacité", "DMS")
F1_2 = Array("Site", "Fournisseur", "Capacité", "DMS", "Etat")
F2_1 = F1_2
F2_2 = Array("Site", "Fournisseur", "Capacité", "Qté", "DMS",
"Etat")
F3_1 = F2_2
F3_2 = F2_1
F4_1 = F3_1
F4_2 = F3_2
Set Plage = .Range("D6", .Cells(.Rows.Count, 4).End(xlUp))
End With
For Each C In Plage
If C.Row = 29 Then Stop
Select Case C.Value
Case "Transformateurs"
With Sheets("Feuil1")
L1 = L1 + 1
For i = 1 To 4
Col = Application.Match(F1_2(i), Sh.[5:5], 0)
.Cells(L1, i + 3).Value = Sh.Cells(C.Row,
Col).Value
Next i
End With
Case "Régulateurs"
With Sheets("Feuil1")
L1 = L1 + 1
.Cells(L1, 4).Value = Sh.Cells(C.Row, Col).Value
For i = 2 To 5
Col = Application.Match(F1_1(i), Sh.[5:5], 0)
.Cells(L1, i + 7).Value = Sh.Cells(C.Row,
Col).Value
Next i
End With
End Select
Next C
End Sub
Daniel


Correspondance des entêtes Tableaux - BDD :

http://www.cjoint.com/c/EFumS7iQRFQ
Avatar
Apitos
Bonjour,

J'ai fait des testes.

Une erreur sur la ligne :

.Cells(L1, 4).Value = Sh.Cells(C.Row, Col).Value

Dans le cas "Régulateur" (Sans s à la fin, parce que dans la feuille "B DD" on trouve "Régulateur")

La variable Col n'est pas définie.

J'ai remplacé Col par 1, mais ça pose probleme, parce que le nom du sit e sera écrit en deux fois dans la colonne D Feuil1.

---

Une erreur sur la ligne toujours dans le cas "Régulateur" :


For i = 2 To 5
Col = Application.Match(F1_1(i), Sh.[5:5], 0)
.Cells(L1, i + 7).Value = Sh.Cells(C.Row, Col).Value
Next i

Parce que l'élément F1_1(5) n'existe pas !

Je remplacé le 5 par 4

----
Je voulais que le tableau Feui1![D5:M32] soit effacé avant chaque mise à jour, mais ça ne m'a pas réussi !
Avatar
DanielCo
Bonjour,
Il y a aussi un problème de pluriel avec "transformateur". Poste ton
code parce que, si le problème survient sur une ligne "régulateur", il
s'agit d'une partie du code que tu as rajouté.
Daniel


Bonjour,

J'ai fait des testes.

Une erreur sur la ligne :

.Cells(L1, 4).Value = Sh.Cells(C.Row, Col).Value

Dans le cas "Régulateur" (Sans s à la fin, parce que dans la feuille "BDD" on
trouve "Régulateur")

La variable Col n'est pas définie.

J'ai remplacé Col par 1, mais ça pose probleme, parce que le nom du site sera
écrit en deux fois dans la colonne D Feuil1.

---

Une erreur sur la ligne toujours dans le cas "Régulateur" :


For i = 2 To 5
Col = Application.Match(F1_1(i), Sh.[5:5], 0)
.Cells(L1, i + 7).Value = Sh.Cells(C.Row, Col).Value
Next i

Parce que l'élément F1_1(5) n'existe pas !

Je remplacé le 5 par 4

----
Je voulais que le tableau Feui1![D5:M32] soit effacé avant chaque mise à
jour, mais ça ne m'a pas réussi !
Avatar
Apitos
Bonjour Daniel,

Voila le classeur :

http://www.cjoint.com/c/EFvj5bylCwG
1 2 3