IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Conversion d'un nombre de données en colonnes pour excel


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut Conversion d'un nombre de données en colonnes pour excel
    Bonjour à tous,


    Je suis désoler il me semblait que j'avais déjà demandé cela mais impossible de remettre la main dessus.


    Depuis mon programme en VB6, j'ai une collection comportant un nombre aléatoire de données.

    Je dois ouvrir une page Excel vierge et ranger mes données dedans.

    Avant j'avais le nombre de colonne qui étaient fixe et seul le nombre de ligne était aléatoire
    Pour ce faire j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim appXcl As Object
    Dim shtXcl As Object
    Dim Cut() As String
    Dim hFile As integer
    hFile = FreeFile
     
    Open "momfichier.xls" For Output As hFile
     
     
    Set appXcl = CreateObject("Excel.Application")
    appXcl.workbooks.Open Filename:=hFile
    Set shtXcl = appXcl.ActiveSheet
     
     For Each line In Collect
            Cut = Split(line, "/")
     
            shtXcl.Range("A" & i).Select
            appXcl.ActiveCell.FormulaR1C1 = Cut(0)
            shtXcl.Range("B" & i).Select
            appXcl.ActiveCell.FormulaR1C1 = Cut(1)
            shtXcl.Range("C" & i).Select
            appXcl.ActiveCell.FormulaR1C1 = Cut(2)
    .....
            i = i + 1
    next
     
     appXcl.Columns("A:A").EntireColumn.AutoFit
      appXcl.Columns("B:B").EntireColumn.AutoFit
      appXcl.Columns("C:C").EntireColumn.AutoFit
      appXcl.Columns("D:D").EntireColumn.AutoFit
    ......
    appXcl.Visible = True



    Il faut que je change cela ou utiliser d'autre fonctions pour que je n'est pas a m’occuper des colonnes.

    Je cherche le moyen pour le moment de convertir un nombre en colonne. Par exemple 1= A et 26 = Z, sa cela va mais cela se complique si j'en ai plus 27 = AA etc..

    Donc soit je part sur cette conversion de nombre en lettre de colonne soit des fonctions font sa directement.

    je continue a cherche, mais merci de votre aide.

  2. #2
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Bonjour,

    Je me suis fait une petite méthode qui marche pas trop mal, mais je suis sur qu'il doit y avoir plus simple, avec des fonctions existantes mais j'ai pas trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Function GetCollExcel(ByVal idx As Integer) As String
     
        Dim vals As Double
        Dim ints As Integer
        Dim s As String
        Dim X As String
     
        idx = idx + 1
        vals = idx / 26
        s = CStr(vals)
        If InStr(1, s, ",") <> 0 Then
            s = Mid(s, 1, InStr(1, s, ",") - 1)
        ElseIf InStr(1, s, ".") <> 0 Then
            s = Mid(s, 1, InStr(1, s, ".") - 1)
        Else
            s = CStr(vals - 1)
        End If
        ints = CInt(s)
        If vals <= 1 Then
            X = Chr(idx + 64)
        ElseIf vals > 1 And vals < 27.01 Then
            X = Chr(ints + 64) & Chr(idx - (ints * 26) + 64)
        Else
            GetCollExcel = "ERROR"
        End If
        GetCollExcel = X
     
     
    End Function

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Salut megamario,

    Il me semble que tu n'es pas obligé d'utiliser les lettres pour spécifier la colonne. Tu dois pouvoir le faire en utilisant des nombres.
    Dis moi si tu trouves ou pas. Si tu ne trouves pas, je rechercherai comment je m'étais débrouillé pour ne pas utiliser les lettres.
    Tu peux aussi poser ta question dans le forum Excel. Tu auras surement plus de réponses.

  4. #4
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Bonsoir Aniki,

    Non je n'est pas trouvé, mais j'ai été interrompu pour une urgence sur un autre produit du coup j'ai pas était plus loin, mise à part ma petite méthode qui marche bien mais qui est bloqué au ZZ que je ne devrais jamais atteindre de toute manière mais bon c'est pas très propre à mon sens.

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 397
    Points
    9 397
    Par défaut
    Bonsoir,

    Pour 1 seule colonne : Columns(26).EntireColumn.AutoFit

    Et pour plusieurs colonnes : Range(Columns(100), Columns(200)).EntireColumn.AutoFit
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Bonsoir,

    Pour 1 seule colonne : Columns(26).EntireColumn.AutoFit

    Et pour plusieurs colonnes : Range(Columns(100), Columns(200)).EntireColumn.AutoFit
    Bonjour,

    Merci pour cette info, mais qu'en est t'il pour l'ajout des données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    shtXcl.Range("A" & i).Select
    appXcl.ActiveCell.FormulaR1C1 = Cut(0)

  7. #7
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Citation Envoyé par megamario Voir le message
    Merci pour cette info, mais qu'en est t'il pour l'ajout des données ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    shtXcl.Range(Cells(1, i)).Select
    appXcl.ActiveCell.FormulaR1C1 = Cut(0)

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 14h39
  2. Réponses: 1
    Dernier message: 14/04/2014, 09h44
  3. Réponses: 4
    Dernier message: 22/03/2013, 15h38
  4. Réponses: 4
    Dernier message: 19/06/2006, 19h15
  5. [FloatToStr] Conversion d'un nombre en AnsiString
    Par bebeours dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/09/2003, 00h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo