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

Macros et VBA Excel Discussion :

Insertion répétée d'un bloc de lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut Insertion répétée d'un bloc de lignes
    Bonjour à tous, je suis nouveau et je viens de débuter VBA Excel, mais j’ai un problème qui est le suivant :
    J’ai importé un fichier XML sur Excel avec 2895 lignes
    <stdyDscr>
    <citation>
    <titlStmt>
    <titl>
    ….
    </catStat>
    </catgry>
    <varFormat type="numeric" schema="other"/>
    </var>
    </dataDscr>
    </codeBook>
    Je veux écrire un programme qui permet une insertion automatique de 6 lignes de données :
    <respunit>enquété<respunit>
    <Qstn>
    <preQTxt>Votre/vos telephone(s) mobile(s) est/sont-il(s) habituellement allume(s) ?</preQTxt>
    <qstnLit>Votre telephone mobile a-t-il ete decharge au cours des 7 derniers jours ?</qstnLit>
    <postQTxt>Avec quelle frequence rechargez-vous votre telephone mobile ?</postQTxt>
    </Qstn>
    En des endroits différents sur les 2895 lignes précédentes.
    Comment procédez ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    A défaut d'explications sur où insérer ce code, sur base de quel décalage, etc, il est malaisé de te donner un code qui va fonctionner chez toi...

    Il serait déjà intéressant de connaître la finalité de ton traitement. Si tu cherches à insérer un bloc xml au sein d'une série de noeuds d'un fichier XML, il est préférable de travailler avec la librairie Microsoft XML V6.0 (par exemple). elle t'offre des outils de manipulation d'un XML qui facilitent le traitement.

    Néanmoins, on peut imaginer la chose suivante:
    • définir le bloc de lignes à insérer;
    • définir le nombre de lignes des blocs XML dans lesquels insérer les nouvelles lignes;
    • Définir à partir de quelle ligne de chaque bloc il faut insérer les lignes;
    • Déterminer la colonne d'arrivée;



    Il faut évidemment dans ce cas que le nombre de lignes par bloc xml au sein de tes lignes soit constant et que l'insertion doive toujours se faire au même endroit de chaque bloc.

    A partir de là, et en commençant par la fin, on peut remonter les blocs et insérer les lignes grâce à une boucle.

    Dans l'exemple suivant, on a plusieurs fois la suite de lettres A => J, avec D, E, F manquants. On a donc x blocs de 7 lignes, et il faut insérer le nouveau bloc à la quatrième ligne de chaque bloc de la colonne du résultat.

    • Le bloc à insérer est donc F1:F3;
    • Le nombre de lignes d'un bloc est 7;
    • Il faut insérer les nouvelles lignes à partir de la ligne 4;
    • La colonne d'arrivée est A.



    Nom : 2017-08-25_150730.png
Affichages : 161
Taille : 13,3 Ko

    Voilà un code qui pourrait convenir
    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
    Sub InsertLines()
      Dim Source As Range
      Dim RowForInsert As Long
      Dim BlocRows As Long
      Dim OffsetValue As Long
      Dim LastInsertrow As Long
     
      BlocRows = 7
      OffsetValue = 4
     
      Set Source = Range("F1:F3")
      LastInsertrow = Range("a1048576").End(xlUp).Row - BlocRows + OffsetValue
     
      For RowForInsert = LastInsertrow To 0 Step -BlocRows
        Source.Copy
        Range("a" & RowForInsert).Insert xlDown
      Next
    End Sub
    Faute d'infos de ta part, difficile de t'aider au plus près de ton besoin.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut damande de solution sur VBA Excel
    Merci Pierre Fauconnier, pour mon exemple, c'est des variable avec des blocs qui varis de 10 à 26. Et les lignes à insérer constituent la partie de la documentation, bien que toutes les variables ne sont pas documentées. Encore une fois de plus merci, vous étes d'un grand secours.

Discussions similaires

  1. Demande d'aide sur vba Excel
    Par o_ousmane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/08/2017, 16h59
  2. Demande d'aide sur vba avec excel
    Par karter13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/01/2016, 21h56
  3. help sur VBA excel
    Par soffy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/05/2007, 11h49
  4. Réponses: 3
    Dernier message: 09/04/2006, 09h10

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