Export de données vers des tableaux
Le
Apitos

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 clas=
seur.
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'ateli=
er" à 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.
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 clas=
seur.
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'ateli=
er" à 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.
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
Les colonnes sont fixes quelle que soit la plage nommée, ensuite il faut boucler sur cette plage nommée...
Le mmoyen le plus simple consiste à mettre les mêmes entêtes sur la
base et sur les tableaux cibles.
Cordialement.
Daniel
C'est cette structure qui m'est exigée pour remplir les tableaux.
peux-tu donner le nom de l'entête de la base de donées ?
Daniel
http://www.cjoint.com/c/EFumS7iQRFQ
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
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 !
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
Voila le classeur :
http://www.cjoint.com/c/EFvj5bylCwG