Réorganisation de base de données de colonne
Fermé
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
-
11 oct. 2011 à 16:46
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 oct. 2011 à 16:30
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 oct. 2011 à 16:30
A voir également:
- Réorganisation de base de données de colonne
- Déplacer une colonne excel - Guide
- Formules excel de base - Guide
- Formule somme excel colonne - Guide
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Tnt base de données vide - Forum TNT / Satellite / Réception
11 réponses
pépé35530
Messages postés
2942
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
19 mars 2016
1 383
11 oct. 2011 à 17:46
11 oct. 2011 à 17:46
Bonjour,
je ne trouve pas très judicieux de multiplier les colonnes.
Je créerai plutôt un TDC avec en étiquettes de colonne le nom des entreprises et en zone des valeurs, les contacts et autres informations.
En cliquant ensuite sur le nombre de contacts pour une entreprise, on obtient l'ensemble des contacts pour cette entreprise.
En cliquant sur le total général on obtient l'ensemble des entreprises et leurs contacts respectifs.
A+
pépé
je ne trouve pas très judicieux de multiplier les colonnes.
Je créerai plutôt un TDC avec en étiquettes de colonne le nom des entreprises et en zone des valeurs, les contacts et autres informations.
En cliquant ensuite sur le nombre de contacts pour une entreprise, on obtient l'ensemble des contacts pour cette entreprise.
En cliquant sur le total général on obtient l'ensemble des entreprises et leurs contacts respectifs.
A+
pépé
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
11 oct. 2011 à 19:03
11 oct. 2011 à 19:03
Rebonjour
Disons que je dois implémenter ça dans un nouvel erp ensuite dou la solution des tdc non efficaces pour moi,
Je voulaisnsavoir sil existait une formule qui permet de caler a des nouvelles colónes les contacts comme précisé dans mon premier email
Merci davance
Disons que je dois implémenter ça dans un nouvel erp ensuite dou la solution des tdc non efficaces pour moi,
Je voulaisnsavoir sil existait une formule qui permet de caler a des nouvelles colónes les contacts comme précisé dans mon premier email
Merci davance
pépé35530
Messages postés
2942
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
19 mars 2016
1 383
11 oct. 2011 à 20:42
11 oct. 2011 à 20:42
Bonsoir,
Je pense que c'est possible avec une Macro. Il faut se tourner vers les spécialistes en la matière.
Bon courage pour la suite
pépé
Je pense que c'est possible avec une Macro. Il faut se tourner vers les spécialistes en la matière.
Bon courage pour la suite
pépé
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
573
Modifié par g le 12/10/2011 à 06:59
Modifié par g le 12/10/2011 à 06:59
erreur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 oct. 2011 à 10:38
12 oct. 2011 à 10:38
re,
50000 lignes!
lire avis de la maison mère la dessus
http://office.microsoft.com/fr-ch/excel-help/utilisation-d-access-ou-d-excel-pour-gerer-vos-donnees-HA001042918.aspx
La solution ne peut pas passer par des TCD, bien sûr
mets un extrait de ton fichier une 100 taine de lignes
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
50000 lignes!
lire avis de la maison mère la dessus
http://office.microsoft.com/fr-ch/excel-help/utilisation-d-access-ou-d-excel-pour-gerer-vos-donnees-HA001042918.aspx
La solution ne peut pas passer par des TCD, bien sûr
mets un extrait de ton fichier une 100 taine de lignes
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 oct. 2011 à 10:50
12 oct. 2011 à 10:50
Comme convenu,
ci-dessous le lien : https://www.cjoint.com/?AJmkXdrbVOS
Merci
ci-dessous le lien : https://www.cjoint.com/?AJmkXdrbVOS
Merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 oct. 2011 à 11:12
12 oct. 2011 à 11:12
Ce n'est pas le m^me nombre de colonnes que dans tes messages!
19-2 colonnes par 5 -disons 6 avec les sacrosaints 20% d'extension- cela fait 102 colonnes... et donc un tableau difficile à lire.
si tu n'as que 3 renseignements par entreprise cela fait 20 colonnes, peu pratique mais acceptable comme l'ont signalé mes petits camarades
Et si tu nous disais le pourquoi du comment de ton tableau?
par exemple recherche d'une société et de ses contacts pour en choisir un de disponible ou ?...
ou?....
il y a peut-être d'autres solutions que celle que tu envisageais
19-2 colonnes par 5 -disons 6 avec les sacrosaints 20% d'extension- cela fait 102 colonnes... et donc un tableau difficile à lire.
si tu n'as que 3 renseignements par entreprise cela fait 20 colonnes, peu pratique mais acceptable comme l'ont signalé mes petits camarades
Et si tu nous disais le pourquoi du comment de ton tableau?
par exemple recherche d'une société et de ses contacts pour en choisir un de disponible ou ?...
ou?....
il y a peut-être d'autres solutions que celle que tu envisageais
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 oct. 2011 à 11:35
12 oct. 2011 à 11:35
oui en gros j'ai une ligne par contact. Alors qu'il me faut une ligne par société (même si cela fait plusieurs contacts par ligne qui se suivent.
Mon exemple était une version simplifiée mais il s'agit exactement de la même démarche.
C'est important pour mon intégration en erp et pour d'autres raisons (même si c'est plus difficile en lecture.
Mon exemple était une version simplifiée mais il s'agit exactement de la même démarche.
C'est important pour mon intégration en erp et pour d'autres raisons (même si c'est plus difficile en lecture.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 12/10/2011 à 11:52
Modifié par michel_m le 12/10/2011 à 11:52
OK, bien que je ne sache pas ce qu'est un "erp" , je pars sur la retranscription avec les 9 premières colonnes communes et les 8 autres variables
Merci de confirmer ou de préciser car on va vers une usine à gaz et je n'ai pas envie de recommencer par suite de malentendu
Merci de confirmer ou de préciser car on va vers une usine à gaz et je n'ai pas envie de recommencer par suite de malentendu
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 oct. 2011 à 11:56
12 oct. 2011 à 11:56
erp = logiciel qui va entre autre gérer notre base de données.
Il s'agit surtout de retranscrire les variables "contact / fonction / email" ce qui fait 3 colonne supplémentaire par contact par fiche entreprise.
Je comprends bien que ca soit quelque peu délicat en terme de lecture mais au final lorsque je vais réintégrer cela dans mon logiciel, la lecture en sera considérablement simplifiée
En tout cas merci pour votre implication
Mathieu
Il s'agit surtout de retranscrire les variables "contact / fonction / email" ce qui fait 3 colonne supplémentaire par contact par fiche entreprise.
Je comprends bien que ca soit quelque peu délicat en terme de lecture mais au final lorsque je vais réintégrer cela dans mon logiciel, la lecture en sera considérablement simplifiée
En tout cas merci pour votre implication
Mathieu
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 oct. 2011 à 12:25
12 oct. 2011 à 12:25
OK, donc je pars sur les 9 fixes et 3 contacts par ligne
sois patient...
sois patient...
pépé35530
Messages postés
2942
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
19 mars 2016
1 383
Modifié par pépé35530 le 12/10/2011 à 11:51
Modifié par pépé35530 le 12/10/2011 à 11:51
Bonjour,
Ta dernière intervention n'apporte pas d'éléments nouveaux. Michel souhaiterait savoir ce que tu comptes faire avec cette base. Quels sont les renseignements que tu veux en tirer (consultation, tirage papier, graphique ???).
Le chiffre de 50 000 entreprises me semble énorme et, à priori, je ne vois pas l'intérêt d'un tel recensement (travailles-tu pour un parti politique ?).
A+
pépé
Ta dernière intervention n'apporte pas d'éléments nouveaux. Michel souhaiterait savoir ce que tu comptes faire avec cette base. Quels sont les renseignements que tu veux en tirer (consultation, tirage papier, graphique ???).
Le chiffre de 50 000 entreprises me semble énorme et, à priori, je ne vois pas l'intérêt d'un tel recensement (travailles-tu pour un parti politique ?).
A+
pépé
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
12 oct. 2011 à 11:55
12 oct. 2011 à 11:55
Bonjour tout le monde,
50 000 lignes ça me semble ingérable, surtout avec de multiples colonnes.
Soucieux d'aider, j'ai composé cette procédure qui, semble t'il devrait répondre à vos attentes, si cela ne fait pas planter votre système...
!!!!!! A tester sur une copie intégrale de votre fichier sous peine de perte totale des données !!!!
Je n'interviendrait plus sur ce sujet, faute de temps.
Je vous recommande donc, avant de partir, de suivre les conseils avisés de michel_m (salut)
A bientôt.
Le code :
Votre fichier avec la macro intégrée
Pour lancer la procédure :
- vous placez sur la feuille Feuil1
- ALT+F8, choisir RegrouperParEntreprises
- Exécuter
Bonne chance!!!!!!!
ps : cette procédure, notamment le dictionnaire a été largement inspirée des contributions de michel_m...
50 000 lignes ça me semble ingérable, surtout avec de multiples colonnes.
Soucieux d'aider, j'ai composé cette procédure qui, semble t'il devrait répondre à vos attentes, si cela ne fait pas planter votre système...
!!!!!! A tester sur une copie intégrale de votre fichier sous peine de perte totale des données !!!!
Je n'interviendrait plus sur ce sujet, faute de temps.
Je vous recommande donc, avant de partir, de suivre les conseils avisés de michel_m (salut)
A bientôt.
Le code :
Sub RegrouperParEntreprises() Dim liste As Object Dim fin As Long, Cptr As Long, Lign As Long Dim Col As Byte Dim entree As String, texteRecherche As String, memAdresse As String Dim tablo Dim tabloSh2 Dim num As Variant Dim zoneRecherche As Range, celluleRecherche As Range Set liste = CreateObject("scripting.dictionary") 'Remplit le dictionnaire avec les valeurs déjà présentes en Feuil2 With Sheets(2) fin = .Columns("A").Cells(.Cells.Rows.Count, "A").End(xlUp).Row If fin > 2 Then tabloSh2 = .Range("A2:A" & fin).Value For Cptr = 1 To UBound(tabloSh2) entree = tabloSh2(Cptr, 1) If Not liste.exists(entree) Then liste.Add entree, entree Next End If End With Lign = 2 'ligne de début de restitution Feuil2 With Sheets(1) fin = .Range("B" & Rows.Count).End(xlUp).Row tablo = .Range("B2:B" & fin).Value For Cptr = 1 To UBound(tablo) entree = tablo(Cptr, 1) If Not liste.exists(entree) Then liste.Add entree, entree Sheets(2).Cells(Lign, 1) = entree Lign = Lign + 1 Set celluleRecherche = .Range("B2:B" & fin).Find(entree, , xlValues, xlWhole) If celluleRecherche Is Nothing Then 'inutile car l'entree va forcément être trouvée MsgBox "L'entreprise : " & entree & " n'a pas pu être trouvée." Else memAdresse = celluleRecherche.Address Do Col = Sheets(2).Range("IV" & Lign - 1).End(xlToLeft).Offset(0, 1).Column If Col = 2 Then Sheets(2).Cells(Lign - 1, Col) = CStr(.Range(celluleRecherche.Address).Offset(0, 13).Value) Sheets(2).Cells(Lign - 1, Col + 1) = .Range(celluleRecherche.Address).Offset(0, 15).Value Sheets(2).Cells(Lign - 1, Col + 2) = .Range(celluleRecherche.Address).Offset(0, 16).Value Sheets(2).Cells(Lign - 1, Col + 3) = .Range(celluleRecherche.Address).Offset(0, 17).Value Else Sheets(2).Cells(Lign - 1, Col) = .Range(celluleRecherche.Address).Offset(0, 15).Value Sheets(2).Cells(Lign - 1, Col + 1) = .Range(celluleRecherche.Address).Offset(0, 16).Value Sheets(2).Cells(Lign - 1, Col + 2) = .Range(celluleRecherche.Address).Offset(0, 17).Value End If Set celluleRecherche = .Range("B2:B" & fin).FindNext(celluleRecherche) Loop Until memAdresse = celluleRecherche.Address End If End If Next End With MsgBox "Regroupement terminé. Cf Feuil2" End Sub
Votre fichier avec la macro intégrée
Pour lancer la procédure :
- vous placez sur la feuille Feuil1
- ALT+F8, choisir RegrouperParEntreprises
- Exécuter
Bonne chance!!!!!!!
ps : cette procédure, notamment le dictionnaire a été largement inspirée des contributions de michel_m...
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 oct. 2011 à 11:58
12 oct. 2011 à 11:58
non c'est juste mon fichier prospect qui est sur excel que je dois impémenter dans un autre logiciel type sage erp x3.
caba_44
Messages postés
99
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
24 novembre 2022
5
12 oct. 2011 à 15:35
12 oct. 2011 à 15:35
Re,
Ca bugue, je vais le faire petits bouts par petis bouts et ca devrait passer :)
En tout cas merci beaucoup :)
Bonne soirée à tous(tes)
Mathieu
Ca bugue, je vais le faire petits bouts par petis bouts et ca devrait passer :)
En tout cas merci beaucoup :)
Bonne soirée à tous(tes)
Mathieu
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
12 oct. 2011 à 16:30
12 oct. 2011 à 16:30
ci joint maquette testée sur ta pièce jointe (env 0,4 sec.)
merci de me dire le temps pour 50000 sociétés (j'ai l'impression qu'on peut aller + vite mais...
en espèrant qu'il n'y ait pas saturation avec ces 50000 stés
https://www.cjoint.com/?3JmqAmdjLhP
le code
merci de me dire le temps pour 50000 sociétés (j'ai l'impression qu'on peut aller + vite mais...
en espèrant qu'il n'y ait pas saturation avec ces 50000 stés
https://www.cjoint.com/?3JmqAmdjLhP
le code
Option Explicit Sub reorganiser() Dim Derlig As Long, Cptr As Long Dim T_pivot, Pivot As Object, Ref As String, Nbre_contact As Byte Dim Nbre_soc As Long, Liste_ste, liste_contact Dim T_erp Dim Lig As Long, Nbre As Byte, Cptr2 As Byte, Col As Byte, Fin As Long Dim Start As Single Start = Timer 'par curiosité With Sheets(1) 'initialisations Derlig = .Columns(1).Find("*", , , , , xlPrevious).Row T_pivot = .Range("B2").Resize(Derlig, 1).Value Set Pivot = CreateObject("scripting.dictionary") ' création de la liste des sociétés avec le nombre de contact For Cptr = 1 To UBound(T_pivot) - 1 Ref = T_pivot(Cptr, 1) If Not Pivot.exists(Ref) Then Nbre_contact = Application.CountIf(.Columns(2), Ref) Pivot.Add Ref, Nbre_contact End If Next Nbre_soc = Pivot.Count Liste_ste = Pivot.keys liste_contact = Pivot.items 'préparation du tableau réorganisé en 1 société=1 ligne ReDim T_erp(1 To Nbre_soc, 1 To 34) For Cptr = 0 To Nbre_soc - 1 Lig = 1 Nbre = liste_contact(Cptr) For Cptr2 = 1 To Nbre Lig = .Columns(2).Find(Liste_ste(Cptr), .Cells(Lig, 2), xlValues).Row If Cptr2 = 1 Then For Col = 1 To 19 T_erp(Cptr + 1, Col) = Cells(Lig, Col) Next Col Fin = Col Else For Col = 17 To 19 T_erp(Cptr + 1, Fin) = Cells(Lig, Col) Fin = Fin + 1 Next Col End If Next Cptr2 Next Cptr End With 'restitution du tableau final en feuille 2 Application.ScreenUpdating = False With Sheets(2) .Range("A2:AG65000").Clear .Range("A2").Resize(Nbre_soc, 34) = T_erp .Activate End With Application.ScreenUpdating = True 'curiosité personnelle sur 50000 sociétés? merci de le dire MsgBox "réorganisation effectuée en : " & Timer - Start & "sec." End Sub
Modifié par Bl4do le 11/10/2011 à 17:49
Et voilà, le tour est joué...