Répéter une base de donnée sur plusieurs codes clients
bonjour
je viens vers vous pour me dépanner car notre informaticien qui devait nous développer une base de donnée sur Excel est parti sans laisser de signe de vie....
je ne suis pas du tout calé dans Excel, il faudrait que je puisse répéter plusieurs codes articles et prix sur chaque code clients comme ci-joint dans mon fichier (j'espère que vous arriverez à me comprendre).
ceci m'aiderai beaucoup car j' ai plus de 1000 codes clients..., je vous remercie d'avance pour votre aide.
cordialement
Julien
Bonjour et bienvenue sur le forum
Je ne vois pas très bien ce que tu attends.
Il faudrait que tu mettes sur une feuilles tes données de départ et sur une autre un exemple de ce que tu veux en faire.
Bye !
Bonjour julien8952, gmb
bis repetitagmb a écrit :Je ne vois pas très bien ce que tu attends.Il faudrait que tu mettes sur une feuilles tes données de départ et sur une autre un exemple de ce que tu veux en faire.
PS/ tu es certain que c'est bien un informaticien a fait ça ! Combien de temps est-il resté ?
Bonjour à tous,
En effet, je ne suis pas sur qu'un informaticien ait pu faire ça! ^^ Mais je crois avoir compris que ce dernier est parti avant même de commencer (ceci expliquant probablement celà)
Et je crois avoir compris;
Il s'agit de "spliter" les 93 premières valeurs(col B et C) pour chaque différents numéro client en colonne A.
Si c'est bien de ça dont il s'agit, vous trouverez en PJ de ce message votre base de donnée avec les données "splitées" sur vos différents code clienst. A vérifier cependant!
Yann
Edit : En fait je viens de m’apercevoir que le fichier en question n'était pas joignable, ci joint donc, la macro qui permet de spliter les codes clients.
Sub BDD()
Dim i As Long, j As Long, u As Long, v As Long, w As Long
Dim tabentree() As Variant, lg As Long
Dim tabsortie(138000, 2) As String
tabentree = ActiveSheet.Range("A2:C2000").Value
For i = 1 To 93
For j = 1 To 3
tabsortie(i - 1, j - 1) = tabentree(i, j)
Next j
v = v + 1
Next i
For i = 94 To 1154
w = v
For u = v To v + 91
tabsortie(u, 0) = tabentree(i, 1)
For j = 2 To 3
tabsortie(u, j - 1) = tabsortie(u - w, j - 1)
Next j
v = v + 1
Next u
Next i
ActiveSheet.Range("E1:G138000").Value = tabsortie
End Sub
bonjour Yann
merci bien de votre aide
l'informaticien devait faire ce fichier mais il n' a rien fait du tout.
c est moi qui est commencé ce fichier Excel mais vu que je suis novice en informatique je n'arrive pas à faire ce genre de programmation.
vous avez tout compris à ma demande il faut "spliter"
par contre je n'ai jamais fait ou vu de macro (sauf le poisson
si vous pouviez me refaire une pièce jointe ou m'expliquer si ca ne vous dérange pas...
julien
Haha!
J'ai essayé de lier le fichier obtenu sur mon message précédent, mais il était un peu trop lourd..! Et comme je n'ai plus le même PC je n'ai plus accès à ce que j'ai fait.
Alors comme ce n'est jamais trop tard pour s'y mettre voici le process pour integrer la macro que je t'ai fait plus haut:
Etape 1:
- Ouvrir ton fichier excel
- Appuyer sur Alt+F11
- rester sur cette fenetre
Etape 2:
- Clic droit sur la colonne de gauche sur le mot "Thisworkbook"
- Cliquer sur Insertion, puis module
- Double cliquer dessus
-> Une page blanche va apparaitre
Etape 3:
- Copier le code que je t'ai fournis plus haut
- Le coller dans la feuille blanche
- Positionner ton curseur sur la première ligne du code ("Sub BDD")
- Appuyer sur F5
Etape 4 :
- Revenir sur ton fichier Excel
- Admirer le résultat
En espérant que ce soit assez clair, dans le cas contraire, j’intégrerai ça demain!
Yann
merci Yann
j'ai réussi a suivre tes conseils jusqu'à l'étape 3
Positionner ton curseur sur la première ligne du code ("Sub BDD")
- Appuyer sur F5
quand j'appuie sur f5 il ne se passe rien...
donc je retourne sur mon fichier excel et je lance le macro et il se passe cela en PJ
erreur syntaxe et le "Sub BDD" est surligné en jaune.
julien
Salut Julien,
Salut l'équipe!
Au-delà de l'exercice, je ne vois pas l'intérêt de recopier ces codes identiques pour chaque client... s'ils restent identiques!!
Pourquoi ne pas organiser ces codes en lignes et les clients en colonnes avec leur prix?
Tu vas me dire que ce n'est pas mon boulot et tu auras bien raison...
Moi, ce que j'en dis, hein!
Private Sub cmdGO_Click()
'
Dim tData(), tClients, tCodes
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
tClients = Range("A94:A" & iRow).Value
tCodes = Range("A2:C93").Value
'
Application.ScreenUpdating = False
'
For x = 1 To UBound(tClients)
For y = 1 To UBound(tCodes)
tCodes(y, 1) = tClients(x, 1)
Next
Range("A" & 2 + (x * 92)).Resize(92, 3).Value = tCodes
Range("A" & 2 + (x * 92)).Resize(92, 1).Interior.Color = Range("B" & 2 + (x * 92) - 1).Interior.Color
Range("B" & 2 + (x * 92)).Resize(92, 2).Interior.Color = Range("A" & 2 + (x * 92) - 1).Interior.Color
Next
'
Application.ScreenUpdating = True
'
End Sub
Par pitié, ne clique pas une deuxième fois sur le bouton!
Si le résultat t'agrée, clic-droit sur le bouton et... éliminer! Le code se trouve dans le module de la feuille 'Code tarifs'.
A+
Bonjour le fil
QED tout à fait d'accord curulis57 ! en gros tu voudrais dire "il faudrait faire une base de données" ?curulis57 a écrit :Au-delà de l'exercice, je ne vois pas l'intérêt de recopier ces codes identiques pour chaque client... s'ils restent identiques!!Pourquoi ne pas organiser ces codes en lignes et les clients en colonnes avec leur prix?
Bonjour le fil,
Je suis assez surpris que le code te renvois une erreur.. De mon coté tout fonctionne parfaitement.!
Du coup en PJ, tu aura le fichier, avec la macro et même le bouton pour la déclencher!
Le code est un peu sale, mais ça tourneras correctement, et ça devrait te donner ce que tu veux. Ceci dit, mes deux compères du dessus ont raison, tu devrait songer à envisager une autre structure pour ta base de donnée, avec celle ci, ça va rapidement devenir ingérable et extrèmement lourd!
Je te laisse comparer le poids de ton fichier avant l’exécution de la macro et après l’exécution.
Yann
bonjour
merci pour votre aide.
Je vais essayer de vous expliquez du mieux la chose de mon coté novice...
nous travaillons avec le logiciel SAGE pour la gestion et compta
les prix sont effectué en fonction d'une catégorie tarifaire sur chaque article.
hors cette année évolution du système informatique les données sont remontés mensuellement automatiquement et tout est transformé en BL.
hors avec ce procédé il faut que les articles soit attachés à chaque client en non plus en une catégorie tarifaire générale.
donc c est la ou l'informaticien devait nous refaire ceci en fichier texte.... mais il n'est plus jamais venu...
donc j'ai fait manuellement sur SAGE avec le premier client entrée tous les articles et prix, et j'ai fait un export de SAGE pour voir comment se présentait la chose en fichier texte puis sur Excel (d'où la forme de la base de donnée)
et c'est la que vous m'avez aidé... et je vais pouvoir essayer lundi matin de renvoyer le fichier texte dans l'autre sens.
encore merci bon week end à vous
cordialement
julien