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 :

VBA - inserer des lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2016
    Messages : 10
    Par défaut VBA - inserer des lignes
    Bonjour,

    Je suis extrêmement novice sous VBA et je teste des choses sans succès...

    J'aimerai que : si les cellules de la colonne B contiennent la variable "0813J" alors ca rajoute 4 lignes en dessous de la cellule contenant la fameuse variable.

    Mais en plus il faut que:
    - les lignes rajoutées soient identique
    - sauf pour le montant où ca doit etre vide
    - et pour la génération où ca doit aller de 2013 à 2016
    - et en plus il faut rajouter la génération 2012 dans la ligne contenant la variable "0813J"

    Je n'arrive déjà pas à rajouter des lignes donc je suis un peu perdue =(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
     
    Dim i As Integer
    For i = 0 To 30
    If Range("B1").Offset(i, 0).Value = "0813J" Then
    Rows(i & ":" & i).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown        
    Else
    End If
    Next i
     
    End Sub
    J'ai mis l'exemple en pièce jointe (1er tableau : ce que j'ai 2eme tableau : ce que j'aimerai obtenir)

    Merci beaucoup à toutes les personnes pouvant m'apporter un peu d'aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Par défaut
    Bonjour,
    Attention a l'offset. Tu as du coup un décallage de ligne. Si tu prends le Rows i tu vas prendre la ligne au dessus car ton offset commence en B1.

    Exemple:
    Ligne 6 tu as la valeur qui t'interesse, du coup tu veux prendre la ligne 6 or l'offset vaut 5 donc tu vas prendre la ligne 5, la copier et l'insérer.
    Ensuite tu vas offseter d'1 incrément mais du coup tu auras rajouter une ligne avant donc tu vas toujours tomber sur la ligne avant celle contenant 0813J que tu vas copier et insérer avant.
    Quand tu isères une ligne, il faut que tu incrémente ton i d'autant sinon tu vas toujours tomber sur la ligne insérée.

    Ce que je ferais c'est faire une petite boucle de 4 insert de ligne quand tu tombes sur la ligne qui t'interesse, puis tu incrémente ton i de 4 pour tomber sur une ligne après celles insérées.

    j'espere que je suis clair!

    Bon courage!

    EDIT: Tu peux lancer ton code pas a pas pour voir ce qu'il fait en appuyant sur la touche F8 quand tu es dans le corps de la sub, ca te permettra de voir ce que fait le code.

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne vais pas entrer dans les autres aspects de cette question ouverte dans la section Excel, mais qui relève de la section VBA.
    Je vais donc ici me contenter de rappeler que lorsque l'on modifie (que ce soit par suppression ou par insertion) le nombre de lignes, on le fait de bas en haut (pour ne pas se mélanger les pinceaux dans la numérotation des lignes traitées) et non de haut en bas.
    Voilà.

  4. #4
    Membre habitué
    Femme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2016
    Messages : 10
    Par défaut
    Merci beaucoup Terim pour les explications , je vois mieux où est le souci , je vais essayer de faire une boucle de 4 lignes alors

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/03/2014, 11h12
  2. [Batch] inserer des ligne dans un prog par batch
    Par mirlidas dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 28/04/2007, 12h42
  3. [Formulaire][VBA] Gestions des lignes du formulaire
    Par Oberown dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/04/2007, 22h44
  4. [SQL-VBA]fusionner des lignes
    Par shagun dans le forum Requêtes et SQL.
    Réponses: 42
    Dernier message: 13/04/2007, 14h37
  5. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 10h58

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