Convertir une liste pour l'utiliser dans Excel

Résolu
ulysse5001 Messages postés 61 Statut Membre -  
DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   -
Salutations à tous.
j'ai une liste de personnes dont les caractéristiques sont présentées en continue: nom prénom, adresse, code postal, âge, salaire. comment segmenter ces informations pour les rendre manipulable en Excel. j'ai déjà utilisé un logiciel qui permettait facilement d'exécuter cette tâche. mais la mémoire....
merci à vous.

10 réponses

  1. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Bonsoir Ulysse.

    Il ne faut pas prendre à la lettre le verbe "importer" utilisé par brucine !
    Une fois que tu as copié ton texte "Papa ;maman ;tatie ;tonton" dans la cellule A1 d'Excel, tu dois faire
    DONNÉES/Outils de données/Convertir puis Type délimité et Séparateur Point-virgule ...


    Les 4 éléments sont dispatchés entre les cellules A1, B1, C1 et D1.
    1
    1. ulysse5001 Messages postés 61 Statut Membre 1
       
      Très bien expliqué! Problème résolu.
      Comme mentionné dans ma demande complémentaire, existe-t-il un moyen d'insérer les ";" autrement qu'un à un? La manipulation que j'ai à exécuter est mensuelle et s'applique pour environ 50 lignes avec 5 insertions chacune.
      À nouveau, merci.
      0
  2. yclik Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   1 609
     
    Bonsoir
    Classeur à tester
    1
    1. brucine Messages postés 24800 Date d'inscription   Statut Membre Dernière intervention   4 164
       
      Oui,

      Tout moyen est de toute façon capillotracté parce qu'il n'y a pas d'espaces qu'entre les champs souhaités (sans quoi on aurait pu s'en servir comme délimiteurs ou les remplacer automatiquement par des points-virgules, par exemple via un batch) et que les noms de magasins et de localités n'ont pas tous le même nombre de caractères et surtout parce que, concernant les premiers, ils peuvent avoir un nombre d'espaces variables.

      Si maintenant il y avait moyen d'écrire à partir de la base de données les magasins sur un mode du style
      LE_ COCHON _DINGUE, on serait sauvés et cela deviendrait plus simple.
      0
    2. ulysse5001 Messages postés 61 Statut Membre 1
       
      Merci yclik. je regarde votre proposition de près.
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    une approche en vba si "QC" est toujours présent

    cette macro lit le fichier texte et scinde chaque ligne.

    A mettre dans un module et appelez la macro LireFichierTexteParLigne()
    en ayant eut soin d'adapter le chemin du fichier texte:

    Option Explicit
    Sub LireFichierTexteParLigne()
    'par: https://excel-malin.com
    Application.ScreenUpdating = False
    On Error GoTo CodeErreur
    Dim IndexFichier As Integer
    Dim MonFichier As String
    Dim ContenuLigne As String
    Dim i As Long
    MonFichier = "C:\Users\LePivert\Documents\essai.txt" '<-- mettez ici le nom du fichier à lire
    IndexFichier = FreeFile()
    Open MonFichier For Input As #IndexFichier 'ouvre le fichier
    i = 1
    While Not EOF(IndexFichier) '
        Line Input #IndexFichier, ContenuLigne     ' lecture du fichier ligne par ligne: la variable "ContenuLigne" contient le contenu de la ligne active
        Cells(i, 1) = ContenuLigne
        'ajoutez ici votre code à appliquer pour chaque ligne
        scinderligne (i)
        i = i + 1
    Wend
    ActiveSheet.Range("A1:F1").Columns.AutoFit
    Close #IndexFichier ' ferme le fichier
    Application.ScreenUpdating = True
    Exit Sub
    CodeErreur:
    MsgBox "Une erreur s'est produite..."
    Application.ScreenUpdating = True
    End Sub
    Sub scinderligne(ByVal ligne As Integer)
    Dim num As String
    Dim ville As String
    Dim tabu As Integer
    ville = Split(Cells(ligne, 1), "QC")(0)
    Cells(ligne, 2) = Split(ville, " ")(0)
    Cells(ligne, 2) = Cells(ligne, 2) & " " & Split(ville, " ")(1)
    num = Split(Cells(ligne, 1), "QC")(1)
    Cells(ligne, 5) = Split(num, " ")(1) & " %"
    Cells(ligne, 6) = Split(num, " ")(3)
    Cells(ligne, 3) = Replace(Cells(ligne, 1), Cells(ligne, 2), "")
    Cells(ligne, 3) = Replace(Cells(ligne, 3), Cells(ligne, 5), "")
    Cells(ligne, 3) = Replace(Cells(ligne, 3), Cells(ligne, 6), "")
    Cells(ligne, 3) = Replace(Cells(ligne, 3), "QC", "")
    tabu = UBound(Split(Cells(ligne, 3)))
    Cells(ligne, 4) = Split(Cells(ligne, 3), " ")(tabu - 3)
    Cells(ligne, 3) = Replace(Cells(ligne, 3), Cells(ligne, 4), "")
    End Sub
    


    Voilà
    1
  4. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour à tous,

    Utilise données==>convertir

    Crdlmt
    0
    1. ulysse5001 Messages postés 61 Statut Membre 1
       
      SVP, comment exécuter Données ===>convertir. j'utilise Office 2016
      merci à vous.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. brucine Messages postés 24800 Date d'inscription   Statut Membre Dernière intervention   4 164
     
    Bonsoir,

    Aucun logiciel ne sait faire cela si les informations ne sont pas délimitées.

    S'il s'agit d'un fichier texte, mettre par exemple un point-virgule entre chaque champ, on pourra ensuite importer le texte ainsi délimité dans Excel.
    0
  7. ulysse5001 Messages postés 61 Statut Membre 1
     
    merci Brucine.
    Tel que suggéré, j'ai séparé les champs avec des " ; " Copier / Coller mais aucun résultat utilisable.
    Dans le menu de Fichier, dans Excel, je vois Exporter mais pas Importer. pourriez-vous me dire comment Importer ?
    0
  8. ulysse5001 Messages postés 61 Statut Membre 1
     
    Un gros merci! Comme on dit: "Papa, ça marche!"
    Il me reste une partie du problème à régler. Est-ce qu'il existe un moyen d'inscrire en bloc les " ; " à chaque point de séparation. Dans une liste de plus de 50 lignes avec 5 points de séparation, c'est beaucoup de manipulation.
    Suggestion ?
    Ulysse
    0
    1. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Suggestion ? oui : Revoir l'élaboration de la source d'informations !
      0
  9. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour à tous,

    Et si tu mettais un exemple réel du contenu de ta cellule ? Tu ne crois pas que ça éviterai de parler dans le vide et que ça permettrait d'apporter la réponse adéquate a ta question.

    Crdlmt
    0
  10. ulysse5001 Messages postés 61 Statut Membre 1
     
    Bonne idée DjiDji. Voici un exemple simplifié.
    20 11 LE COCHON DINGUE LEVIS QC 2,00 % 42$
    20 11 MAGASIN CDN TIRE MONTRÉAL QC 1,50 % 75$
    20 11 IGA EXTRA QUEBEC QC 3,00 % 15$

    Dans cet exemple, je dois séparer la date, le lieu, le % et le montant.
    À partir des informations obtenues de chacun des répondeurs, je sais maintenant comment séparer les champs. Toutefois, comme à chaque mois la liste à traiter comprend environ 50 lignes, j'aurais à insérer environ 250 à 300 points-virgules.
    Ma nouvelle question consiste à savoir s'Il y a un moyen de procéder aux insertions autrement qu'une à la fois.
    Un merci sincère à tous ceux qui prendront le temps de me répondre.
    Ulyss
    0
  11. ulysse5001 Messages postés 61 Statut Membre 1
     
    cs_Le Pivert
    Je constate que vous êtes "un peu plus" (hum) avancé que moi dans la programmation.
    Vous avez consenti pas mal d'efforts pour développer cette solution et je vous en remercie. Toutefois, avant d'être en mesure de l'appliquer, je devrai retourner à mon livre de VBA !!!
    En effet, je comprends que la prémisse est à l'effet que QC est toujours présent, ce qui n'est pas le cas (sauf dans l'exemple que j'ai soumis).
    Je conserve votre proposition en attendant de pouvoir l'utiliser.
    0
    1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
       
      Bonjour à tous,

      Je joue les rabats-joie, mais ....
      Y'a pas de magasin à Val d'or ou à La Tuque ?

      Crdlmt
      0