Bonjour à tous !
Je sollicite votre aide pour un problème qui dépasse mes (maigres !) compétences Excel/Access et qui concerne la migration d’une base de données Access vers SQLite.
Cette base de données recense les appareils photo du marché avec leurs principales caractéristiques techniques. Elle comporte plusieurs tables dont une principale (nommée « Base ») comportant elle-même de nombreuses colonnes renseignant les caractéristiques desdits appareil, certaines avec des valeurs multiples. Ainsi, la colonne « Image_Size » de cette table « Base » recense l’ensemble des tailles d’images que peut réaliser un appareil photo, renseignées par le biais d’une table secondaire recensant toutes les tailles d’images existantes.
Cette colonne apparaît donc sous Access par des valeurs séparées par des points-virgules.
En aparté, pour travailler sur ma base de données version SQLite j’utilise DB Browser qui me paraît simple et ergonomique, avec une fonction import de table depuis un fichier CSV.
Je dois donc au préalable exporter la partie concernée de ma table Access en CSV (ce que ne propose pas en passant le système d’export d’Access, mais c’est un détail que je contourne en exportant en xlsx et en convertissant après).
Or, comme SQL n’accepte pas les champs à valeurs multiples, je dois « découpler » toutes ces valeurs pour chaque ligne d’appareil pour me retrouver dans SQLite avec une table intermédiaire/jointure faisant la jonction entre la table importée recensant toutes les tailles possibles d’images (facile, car un champ = une valeur) et la table « Base » sous SQLite (qui correspond grosso modo à la table « Base » sous Access).
Bref, l’import en CSV dans DB Browser est facile, à condition que le CSV soit bien formaté au départ et c’est là que les ennuis commencent, en particulier pour cette fameuse table intermédiaire/jointure.
Je me retrouve avec, dans mon fichier xlsx, mes trois colonnes : « ID SQLite» identifiant l’appareil dans la BD SQLite, « ID Access » identifiant l’appareil dans la BD Access et « ImageSize » regroupant sur une colonne toutes les valeurs possibles séparées par des points-virgules.
Pour plus de lisibilité, j’ai mis en 1 un extrait de ce fichier.
Je voudrais arriver au résultat suivant : une ligne par taille d’image possible pour chaque appareil, pour importer le tout facilement ensuite dans DB Browser. J’ai fait manuellement quelques lignes, dans le fichier 2. La colonne « ID Access » répétera autant de fois son identifiant qu’il y a de taille d’image. On aura donc par exemple répété 4 fois l’identifiant 1 puisqu’il y a 4 tailles d’images possibles pour l’appareil auquel cet identifiant renvoie.
Un détail qui a son importance : je ne peux pas changer le format qui doit rester sous la forme Lxl avec L= Longueur de l’image et l= largeur de l’image, car cette base de données est ensuite exploitée par un logiciel écrit en C++ et qui a déjà ses jointures formées depuis longtemps et qui sont très complexes à modifier, en tous les cas plus complexes que pour mes tables!
Une formule Excel est-elle envisageable pour transposer le fichier 1 en fichier 2?
Merci d’avance pour vos lumières !