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 :

Ajouter nombre de lignes saisis dans Userform [XL-2016]


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
    Femme Profil pro
    Adjointe administrative
    Inscrit en
    Octobre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Adjointe administrative
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2018
    Messages : 5
    Par défaut Ajouter nombre de lignes saisis dans Userform
    Bonjour à tous et à toutes,

    Tout d'abord, j'ai une ligne contenant toutes les formules. À l'aide d'un Userform, je désire insérer en-dessous des copies de la ligne avec formules selon le nombre inscrit dans la case appropriée du Userform.

    Voici ma formule :

    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
    Private Sub textnbreitem_Change()
    Dim i As Long
    For i = 6 To 6 + textnbreitem
     
        Rows("24:24").Select
        ActiveCell.Offset(1, 0).EntireRow.Insert xlShiftDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Selection.EntireRow(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A23:M23").Select
        Selection.AutoFill Destination:=Range("A23:M24"), Type:=xlFillDefault
        Range("A23:M24").Select
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 1
        Range("B24").Select
        Selection.ClearContents
        Range("C24").Select
        Selection.ClearContents
        Range("A24").Select
        Selection.ClearContents
        Next
     
    End Sub

    Pour l'instant, je suis en mesure d'ajouter les lignes avec formules par contre la mise en page des lignes en dessous est compromise.

    Aidez-moi s'il vous plait.

    Je vous remercie à l'avance pour votre aide !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Petit exemple d'une procédure qui ajoute un certain nombre de lignes définie par la constante nommée NumberOfRowsToAdd à une plage de données nommée rng en conservant les formules de la plage source.
    Pour que la procédure fonctionne, la plage source doit avoir la première ligne remplie (Les titres) et la première colonne remplie également.
    Pour l'exemple la plage source se trouve dans la feuille nommée [Feuil2] du classeur où se trouve le code VBA (ThisWorkbook) et commence en cellule A1
    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
    Sub T()
      Const NumberOfRowsToAdd As Long = 3   '  Nombre de lignes à insérer
      Dim rng As Range, rngTarget As Range, NumberOfRows As Long
      Set rng = ThisWorkbook.Worksheets("Feuil2").Range("A1").CurrentRegion
      With rng
        NumberOfRows = .Rows.Count ' Nombre de lignes de la plage source
        Set rngTarget = .Worksheet.Range(.Cells(NumberOfRows + 1, 1), .Cells(NumberOfRows + NumberOfRowsToAdd, .Columns.Count))
        ' Copie de la dernière ligne de la plage en autant de lignes définie par NumberOfRowsToAdd
        .Rows(.Rows.Count).Copy rngTarget
      End With
      On Error Resume Next
      rngTarget.SpecialCells(xlCellTypeConstants).ClearContents
      On Error GoTo 0
      Set rng = Nothing: Set rngTarget = Nothing
    End Sub
    Code à adapter dans ta procédure événementielle

    Petite remarque. Il serait judicieux de s'intéresser au tableau structuré d'excel qui recopie automatiquement lors d'une insertion de lignes les formules, formats conditionnels, Validation de données, etc.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Adjointe administrative
    Inscrit en
    Octobre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Adjointe administrative
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2018
    Messages : 5
    Par défaut
    Merci beaucoup Philippe pour ton aide c'est grandement apprécié!!

  4. #4
    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.

    Sans mettre en doute la solution de Philippe, ça sert à quoi ces gesticulations? Pourrais-tu exprimer en français (sans jargon vba) ce dont tu disposes et ce que tu souhaites obtenir?

    A lire entre les lignes, j'ai l'impression que tu souhaites préparer une "plage" pour recevoir des nouvelles données. Si c'est le cas, un tableau structuré (surtout en 2016) permet cela sans aucune ligne de code.
    "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...
    ---------------

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/04/2008, 15h21
  2. nombre de ligne maxi dans un fichier texte
    Par cerco1 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 27/02/2008, 00h51
  3. Réponses: 5
    Dernier message: 25/06/2007, 10h51
  4. Nombre de ligne contenu dans un ResultSet
    Par BRAUKRIS dans le forum JDBC
    Réponses: 3
    Dernier message: 12/09/2005, 11h40
  5. Nombre de ligne maxi dans une table ACCESS
    Par ygiraudeau dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2005, 18h23

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