[2002] Import de données et mise en forme

Bonjour,

J'utilise une base de données (.CSV) pour remplir automatiquement un fichier excel 2002 ; cependant, j'aimerais pouvoir afficher le résultat en plusieurs colonnes en définissant un nombre de lignes maximal par colonnes dans le fichier excel.

Quelqu'un connait-il la solution ?

Merci d'avance.

Bonjour

j'aimerais pouvoir afficher le résultat en plusieurs colonnes en définissant un nombre de lignes maximal par colonnes dans le fichier excel.

Ne serai-ce pas un nombre de colonnes maximum par ligne importée?

Regarde du côté de la commande de menu "Données" "Convertir"

Cordialement

Non c'est bien un nombre de lignes maximal.

Je m'explique : j'ai une base de données avec différentes informations sur des personnes, et je souhaite faire une "liste" avec une de ces informations sur excel. Cependant, il faut que les données importées s'affichent sur 2 colonnes, pour réduire le nombre de pages.

J'avais entendu parler d'une solution avec "DECALER" sur internet, mais je n'arrive pas à mettre la main dessus.

Je n'ai pas trouvé la commande que tu m'as indiquée.

Bonjour

De mémoire, ne serai-ce pas sur 2002, "Données" "Redistribuer"

Si c'est le cas, il te suffit avec cette commande de définir le partage de ta ligne en 2

Cordialement

Je n'ai pas trouvé cette option. Mon Excel est en anglais ; voici la liste des menus dans "Data" :

  • Sort
  • Filter
  • Form
  • Validation
  • Table
  • Text to Columns
  • Consolidate
  • Group and Outline
  • PivotTable and PivotChart Report
  • Import external data
  • Refresh data

Bonsoir

Je pencherai pour "Text to Columns "

Cordialement

J'ai regardé, mais aucune option ne permet de définir le partage de la colonne. Ce menu ressemble plus à "Import data", on sélectionne comment les champs sont séparés puis excel met tout sur une colonne.

Il n'y a pas de possibilité de faire un "saut de colonne" comme pour un saut de page ?

Bonsoir

N'ayant pas Excel en anglais, à ce stade, je pense que tu devrais envoyer un fichier avec quelques lignes de texte issues du fichier CVS et montrer le résultat que tu souhaites obtenir.

Pour cela, regarde joindre un fichier, en haut de cette page.

Cordialement

Je vais essayer d'exposer ici ce que je veux faire (les tirets séparent les cellules):

Exemple de fichier CSV ("base de donnée source"):

----------------COL1---COL2

--------------- Nom----Prenom

ROW 1-------a--------z

ROW 2-------b--------y

ROW 3-------c--------x

ROW 4-------d--------w

ROW 5-------e--------v

ROW 6-------f---------u

ROW 7-------g--------t

Fichier excel,

dans lequel j'importe les données du CSV ci-dessus ; il me faut uniquement l'information "nom" sous forme de colonnes avec 3 lignes maximum. Voici donc le résultat souhaité :

----------------COL 1--------COL 2--------COL 3

ROW 1-------a--------------d--------------g

ROW 2-------b--------------e

ROW 3-------c---------------f

ROW 4

Merci d'avance.

Sinon, on ne peut pas faire ca avec une macro ?

Bonjour, Salut Amadéus,

Pourra-t-on avoir ton fichier brut .CSV ? Je suppose que dans ton fichier les champs sont séparés par les points-virgules. Envoi-nous un petit bout de fichier pour voir sa structure. C'est sûrement faisable par une macro.

Edit Amadéus: Salut Raja; La demande de fichier a déjà été faite.

J'ai extrait quelques lignes de mon fichier CSV :

https://www.excel-pratique.com/~files/doc/dossiers_extract.csv

La seule colonne que je souhaite récupérer sous Excel est celle intitulée "NOM". Est-il possible d'adjoindre une condition (i.e. récupérer l'enregistrement seulement si la colonne "LUNDI" contient un enregistrement).

Merci.

Bonsoir CK

Ce qu'il nous faut, c'est quelques lignes du fichier CVS pour voir sa présentation.

En bref, savoir

1) Quel est le séparateur de champs utilisé dans le CVS

2) voir si toutes les colonnes qui sont sur le fichier excel que tu nous a envoyé correspondent à un séparateur.

Envoie donc les lignes CVS correspondantes.

Cordialement

Bonsoir,

re-Amadéus...

regarde le fichier joint

dans le code fourni, remplace le chemin par l'emplacement exact de ton fichier

tu peux choisir un ou plusieurs jours de la semaine

Cependant, seules les données communes seront extraites

si tu ne choisis qu'un jour, les données de ce jour seront extraites

l'extraction se fait dans l'onglet "résultat"

Chemin à modifier :

With Sheets("dossiers_extract").QueryTables.Add(Connection:= _
    "TEXT;C:\dossiers_extract.csv", Destination:= _
        Sheets("dossiers_extract").Range("A1"))

Remplace le chemin C:\dossiers_extract.csv par le véritable chemin....

le fichier :

https://www.excel-pratique.com/~files/doc/dossiers_extract.xls

Alors, j'ai correctement modifié le chemin ; par contre, lorsque je clique sur le bouton "OK" de la macro, une erreur apparaît :

Run-time error '1004':

Application-defined or object-defined error

Le Debug m'amène à la ligne de code suivante :

With Sheets("dossiers_extract")

DerLig = .[A65000].End(xlUp).Row

For i = 1 To 7

Col = IIf(Me.Controls("Checkbox" & i), i + 9, 0)

On Error Resume Next

If Col > 0 Then _

.Range(.Cells(1, Col), .Cells(DerLig, Col)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

On Error GoTo 0

Next i

.Rows(1).Delete

.Columns("B:IV").Delete

Cells.ClearContents

DerLig = .[A65000].End(xlUp).Row

If DerLig > 3 Then

j = 1

For i = 1 To DerLig Step 3

Cells(1, j).Resize(3, 1).Value = .Cells(i, 1).Resize(3, 1).Value

j = j + 1

Next i

Else

Cells(1, 1).Resize(j, 1).Value = .Cells(1, 1).Resize(j, 1).Value

End If

' .Cells.ClearContents

End With

Unload Me

End Sub

Je ne connais rien au VBA, sauriez vous me dire d'où vient le problème ?

Bonjour

Pour ceux qui ne veulent pas de VBA quand on peut l'éviter.

https://www.excel-pratique.com/~files/doc/dossiers_extractV2.xls

Cordialement

Merci Felix et Amadéus.

Néanmoins, le fichier va être utilisé par des personnes qui ne sont pas informaticiennes et la version en VBA de Felix me paraît plus intuitive ; quelqu'un saurait-il la rendre fonctionnelle ?

Bonsoir,

ce cas de figure se produit si tu n'as aucune données à extraire...

(par exemple, tu as sélectionné les données communes à tous les jours de la semaine)

pour éviter le message, modifies ainsi le code :

    Cells.ClearContents
    DerLig = .[A65000].End(xlUp).Row
    j = 1
    If DerLig > 3 Then
        For i = 1 To DerLig Step 3
            Cells(1, j).Resize(3, 1).Value = .Cells(i, 1).Resize(3, 1).Value
            j = j + 1
        Next i
    Else
        Cells(1, 1).Resize(j, 1).Value = .Cells(1, 1).Resize(j, 1).Value
    End If

remarque la ligne j=1 qui a changé de place, et est située devant la ligne If Derlig > 3 Then

Nota, pour obtenir toutes les données, sans tri, ne sélectionne aucun jour, et appuie sur "OK"

Si tu sélectionnes tous les jours, tu n'obtiendras que les données "Communes" aux 7 jours

Bon courage

Rechercher des sujets similaires à "2002 import donnees mise forme"