Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

perenthian

XLDnaute Nouveau
Je joins un fichier excel (modifié, raccourci), qui est à la base une base de donnée pro et dont l’extension n’est pas un .xslm mais un .hdb et qui peut s’ouvrir avec bloc note.

Ce fichier de base est constitué d’une première partie qui se termine au mot clef « [STRUCTURES_NUMBER] ». En face, il y a un nombre A. Ensuite on retrouve A parties comprises entre les mots clefs « [STRUCTURE_X] » et « [STRUCTURE_X+1] » sauf pour la dernière partie dont la borne finale est « le vide » de cellules.
Le fait est que la position de ces mots clefs varie en fonction des études, du nombre de ligne etc.
A partir de ce fichier, je veux créer A fichiers qui comprennent chacun la première partie suivi des parties « [STRUCTURE_X] » successives.
Le mieux est de passer par le bloc note et d’ouvrir le fichier de base en caché. Pour cela, j’ai écrit ce code mais celui ne fonctionne pas, et je ne vois pas la cause…

Code:
    Worksheets("General").Activate

    Dim xHDB(10000) As String
    Dim x_repdeb_HDB(20, 2)
    
    namepath = Cells(11, 2)
    database = Cells(14, 2)
    file = database & ".HDB"
    link = namepath & file
    link1 = namepath & database

    Open link For Input As 1

    Nbline = 0
    NSTR = 0
    r = 1

    Do While Not EOF(1)
        Line Input #1, xHDB(r)
            If InStr(xHDB(r), " STRUCTURES_NUMBER") <> 0 Then
                R_part_com = r
            End If
            If InStr(xHDB(r), " STRUCTURE_") <> 0 Then
                NSTR = NSTR + 1
                x_repdeb_HDB(NSTR, 1) = r
            End If

        r = r + 1

    Loop

    RMAX = r
    NSTR_max = NSTR

    Close #1

    For ISTR = 1 To NSTR_max
        Open link1 & ISTR & ".hdb " For Output As 1
            
        For i = 1 To R_part_com
            Print #1, xHDB(i)
        Next
        
        If ISTR <> NSTR_max Then
            Rend1 = x_repdeb_HDB(ISTR + 1, 1) - 1
        Else
            Rend1 = RMAX
        End If
        
        For i = x_repdeb_HDB(ISTR, 1) To Rend1
            Print #1, xHDB(i)
        Next
        
        Close #1
    
    Next

Merci d'avance
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
636
Retour