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

VBScript Discussion :

Extraire un bloc de données


Sujet :

VBScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Par défaut Extraire un bloc de données
    Étant novateur en vbscript, je cherche un code en VBS, permettant d'extraire un bloc de données dans un fichier excel dynamique, en fait, je souhaite récupérer mes données de telle ligne à telle ligne suivant des mots bien précis.
    Merci pour votre réponse.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Il faut pas chercher, il faut écrire ton code ... qu'as tu écris ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Par défaut
    Bonjour,
    Mon problème est d' extraire des données d'un fichier excel dynamique.
    En effet, mon problème exact, c'est comment détourner le problème de la taille de ma plage (la feuille excel), c' est a dire, j' ai un code, ci-dessous, qui me permet de lire ligne par ligne le fichier excel (DYNAMIQUE) et d'exporter les données vers un autre fichier excel, mon problème est que mon premier fichier change sa taille suivant les données (Les données de CVs), par exemples, il y'a des personnes qu'ont deux stages, trois diplômes....
    Mon but est de récupérer toutes les informations de chaque CV et de les exporter vers l'autre fichier (bien classées, bien arrangées...).
    Il y' a des CVs qui sont moins courts que d'autres, et le problème vient d'ici, parce que mon code est générique, pour tous les différents cas de CVs.

    N.B: Le problème a lieux ligne 17 à 40
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    .
    .
    .
    maLigne = Split( monFichier.ReadAll, vbcrlf)
    For i = LBound(maLigne) to UBound(maLigne) Step 1
     
    If  strComp(left(maLigne(i), 6), "Stages") = 0 Then		
            objWorkbook2.Activesheet.Range("BN" & k + 3) = mid(maLigne(i + 1 ), 23)
            objWorkbook2.Activesheet.Range("BO" & k + 3) = mid(maLigne(i + 2), 5)
            objWorkbook2.Activesheet.Range("BP" & k + 3) = mid(maLigne(i + 3), 15)
            objWorkbook2.Activesheet.Range("BQ" & k + 3) =  mid(maLigne(i + 4), 15)
            objWorkbook2.Activesheet.Range("BR" & k + 3) = mid(maLigne(i + 5), 8)
            objWorkbook2.Activesheet.Range("BS" & k + 3) = mid(maLigne(i + 6), 11)
            objWorkbook2.Activesheet.Range("BT" & k + 3) =  mid(maLigne(i + 7), 9)
            objWorkbook2.Activesheet.Range("BU" & k + 3) = mid(maLigne(i + 8), 6)
    '-------------------------------------------------------
    	If instr(maLigne(i + 10), "Organisme / Entreprise") <> 0Then
    			objWorkbook2.Activesheet.Range("BV" & k + 3) = mid(maLigne(i + 10), 23)
    			objWorkbook2.Activesheet.Range("BW" & k + 3) = mid(maLigne(i + 11), 5)
    			objWorkbook2.Activesheet.Range("BX" & k + 3) = mid(maLigne(i + 12), 15)
    			objWorkbook2.Activesheet.Range("BY" & k + 3) =  mid(maLigne(i + 13), 15)
    			objWorkbook2.Activesheet.Range("BZ" & k + 3) = mid(maLigne(i + 14), 8)
    			objWorkbook2.Activesheet.Range("CA" & k + 3) = mid(maLigne(i + 15), 11)
    			objWorkbook2.Activesheet.Range("CB" & k + 3) =  mid(maLigne(i + 16), 9)
    			objWorkbook2.Activesheet.Range("CC" & k + 3) = mid(maLigne(i + 17), 6)
    	End If
     
    		If  instr(maLigne(i + 19), "Organisme / Entreprise") <> 0Then
    			objWorkbook2.Activesheet.Range("CD" & k + 3) = mid(maLigne(i + 19), 23)
    			objWorkbook2.Activesheet.Range("CE" & k + 3) = mid(maLigne(i + 20), 5)
    			objWorkbook2.Activesheet.Range("CF" & k + 3) = mid(maLigne(i + 21), 15)
    			objWorkbook2.Activesheet.Range("CG" & k + 3) =  mid(maLigne(i + 22), 15)
    			objWorkbook2.Activesheet.Range("CH" & k + 3) = mid(maLigne(i + 23), 8)
    			objWorkbook2.Activesheet.Range("CI" & k + 3) = mid(maLigne(i + 24), 11)
    			objWorkbook2.Activesheet.Range("CJ" & k + 3) =  mid(maLigne(i + 25), 9)
    			objWorkbook2.Activesheet.Range("CK" & k + 3) = mid(maLigne(i + 26), 6)
    		End If
    	End If
    .-----------------------------------------
    .
    .
    Merci.

  4. #4
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Un simple contrôle serrait comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                'dim nleap
                nleap=10
                if i < (ubound(maLigne)-nleap+1) then
                    'attention: typo espace entre 0 and Then
                    If instr(maLigne(i + nleap), "Organisme / Entreprise") <> 0 Then
                        'etc etc
                    End If
                end if
                nleap=19
                if i < (ubound(maLigne)-nleap+1) then
                    If  instr(maLigne(i + nleap), "Organisme / Entreprise") <> 0 Then
                        'etc etc
                    End If
                end if

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    amendement

    Attendez, je n'ai pas vu le contenu. Je vois maintenant que on fait appeler aux nleap 17 et 26 maximum respectivement. Il faut donc faire contrôle le nombre magique 26 plus simplement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                'dim nleap
                nleap=17    'maximum leap in the correlated index
                if i < (ubound(maLigne)-nleap+1) then
                    'attention: typo espace entre 0 and Then
                    If instr(maLigne(i + 10), "Organisme / Entreprise") <> 0 Then
                        'etc etc
                    End If
                end if
                nleap=26
                if i < (ubound(maLigne)-nleap+1) then
                    If  instr(maLigne(i + 19), "Organisme / Entreprise") <> 0 Then
                        'etc etc
                    End If
                end if

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    dans le message N°3, lignes 18 et 29, il manque un espace juste avant le Then, mauvais copier/coller ou erreur de frappe ?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Par défaut
    Bonsoir,
    Il suffit de faire un contrôle au niveau du code en rouge
    if (i + 10) < Ubound(maLigne) then
    .
    .
    .
    End if
    La meme chose pour la partie i + 19
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/08/2014, 18h47
  2. Réponses: 4
    Dernier message: 01/10/2012, 18h40
  3. Extraire des blocs de données dans un fichier. AWK?
    Par oliverjack dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2009, 19h56
  4. [9i] bloc de données altéré
    Par remika dans le forum Oracle
    Réponses: 37
    Dernier message: 09/09/2005, 15h40
  5. [forms] ref cursor associé à un bloc de données
    Par plaineR dans le forum Forms
    Réponses: 9
    Dernier message: 27/08/2004, 18h26

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