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 :

Macro pour insérer une ligne Excel sous condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Par défaut Macro pour insérer une ligne Excel sous condition
    Bonjour à tous,

    RELEVE MATERIELS.xlsm

    Je suis novice en macro et j'aurai, SVP, besoin de votre aide pour mettre en place un macro sur le fichier EXCEL joint.

    Je dois mettre en place une procédure qui permet de compléter le tableau en automatisant la colonne "A" suivant la quantité indiquée. Par exemple, si la quantité indiquée sur la cellule "A4" est de 6, il faudrait que le système insère automatiquement 6 lignes identiques à la ligne n°4 (1 ligne par matériel), etc....

    Je vous remercie pour votre aide

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour à tous
    Aussi débutant et autodidacte ...méfiez vous de mes propositions
    1/ Tester le code proposé sur une copie de ton travail
    2/ La colonne A de ton fichier jointe est vide
    3/ Réserver la colonne A uniquement pour les quantité et déplacer les chapitres à la colonne B
    ce n'est qu'une piste à améliorer et à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub inserligne()
      With Sheets("RELEVES MATERIELS") '
    dernligne = .Range("A" & Rows.Count).End(xlUp).Row
    For k = dernligne To 4 Step -1
       If .Cells(k, 1).Value <> "" Then
       X = .Cells(k, 1).Value
       .Rows(k + 1).Resize(X).Insert
       End If
      Next k
      End With
      End Sub
    BONNE CONTINUATION

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Par défaut
    Re-bonjour,
    Je vous remercie pour le retour mais j'ai un message d'erreur à l'exécution (voir capture d'écran ci-dessous). Pourriez-vous m'aider car je ne sais pas à quoi cela correspond.
    Dans cette attente,
    Images attachées Images attachées  

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    y a une lettre ou un mot dans la colonne A qui empêche l'exécution du code puisque il attribue une lettre à la valeur de X
    ci joint un fichier test simplifié
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Barbara (sois bienvenue sur le Forum), Bonjour Bennasr et le Forum,

    2 remarques :
    - Déclarer les variables est une précaution fondamentale. Cela évite parfois des erreurs. Tu peux rendre cette option obligatoire sur ton espace VBE
    - Autant déclarer X en amont
    Ce qui donne

    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
    Option Explicit
     
    Sub inserligne()
     
    Dim dernligne As Integer, k As Integer
    Dim X As Byte
     
    Application.ScreenUpdating = False
     
    With Sheets("RELEVES MATERIELS") '
          dernligne = .Range("A" & Rows.Count).End(xlUp).Row
          For k = dernligne To 4 Step -1
                X = .Cells(k, 1).Value
                If X + 0 > 0 Then _
                      .Rows(k + 1).Resize(X).Insert
          Next k
    End With
     
    End Sub

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Par défaut
    Merci ça a l'air de fonctionner. Par contre, il faudrait juste que les lignes insérées reprennent les textes et formats des lignes figurant dans les colonnes C / I / J / K / L & M.

    Et encore un grand MERCI pour votre aide.

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    re
    voila comment remplir la colonne C
    le reste à compléter
    bonne continuation
    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
     
     
      Sub inserligne()
      With Sheets("RELEVES MATERIELS") '
    dernligne = .Range("A" & Rows.Count).End(xlUp).Row
    For k = dernligne To 4 Step -1
       If .Cells(k, 1).Value <> "" Then
       X = .Cells(k, 1).Value
       .Rows(k + 1).Resize(X).Insert
       End If
       For j = 1 To X
       .Cells(k + j, 3).Value = .Cells(k, 3)
       Next j
      Next k
      End With
      End Sub

Discussions similaires

  1. [XL-2013] Macro pour inserer une image dans une feuille excel
    Par semarokaben dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2017, 10h41
  2. Colorer une plage de lignes excels sous condition
    Par All_yson dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/06/2014, 12h33
  3. [E-02] Macro pour insérer une ligne
    Par HQ_LG4 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/10/2008, 00h07
  4. macro pour impression dernière ligne excel
    Par schwoby dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2007, 14h33
  5. macro pour impression d'une ligne excel sous word
    Par schwoby dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 12h02

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