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.
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
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 :
8fc34776-3764-4574-9a36-a85ff03c97de@googlegroups.com...
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
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
Apitos
Bonjour Jacquouille,
Les colonnes sont fixes quelle que soit la plage nommée, ensuite il faut boucler sur cette plage nommée...
Bonjour Jacquouille,
Les colonnes sont fixes quelle que soit la plage nommée, ensuite il faut boucler sur cette plage nommée...
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
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
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
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 !
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 !
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 !
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 !
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 !
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 !