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 :

Recherche, Insertion et collage


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Recherche, Insertion et collage
    Bonjour à tous,

    J'ai lu cette discussion.

    Mon sujet :
    Mon classeur est divisé en 8 feuilles (7 de BdD et la 1ère reprenant chacune l'une d'elle de façon condensée pour en faire un catalogue)

    Ma problématique est
    Lorsque je remplis une nouvelle ligne dans une des 7 feuilles, et je veux que celle-ci soit copiée dans le catalogue par insertion de ligne.
    Le remplissage simple ne me permet pas de rassembler par catégorie dans la feuille "Catalogue".

    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
    43
    44
    45
    46
    47
    48
    Sub test()
    Dim DerLig As Long
        With ThisWorkbook.ActiveSheet
            DerLig = .Range("A" & Rows.Count).End(xlUp).Row
        End With
     
    Dim DerLigcata As Long
        With ThisWorkbook.Feuil1
            DerLigcata = .Range("A" & Rows.Count).End(xlUp).Row
        End With
     
    If DerLig > DerLigcata Then
     
     
    Dim Ligne As Integer
    Dim Colonne As Integer
    'La variable Insertion est là pour empêcher la macro de tourner à l'infini
    'En effet, quand on modifie une cellule, la macro insère une ligne
    'Excel interprète cette insertion comme une modification de cellule
    'donc il réinsère une autre ligne, etc, etc...
    Static Insertion As Boolean
     
    'Enregistre la ligne et la colonne de la cellule modifiée
    Ligne = Target.Row
    Colonne = Target.Column
     
    'La macro ne s'exécute que si on modifie une cellule du tableau
    'et si on a activée la macro (cellule L1 = 1)
        If Ligne > 18 And Colonne < 13 And Range("M1").Value = 1 Then
        'Si Insertion est faux, cela veut dire qu'on a rien insérer, dans ce cas on peut insérer une ligne
            If Insertion <> True Then
                If Cells(Ligne + 1, 1).Value <> "" Then
                'On va insérer une ligne, donc on modifie la variable Insertion pour ne pas réitérer
                Insertion = True
                'Insertion de la ligne
                Cells(Ligne + 1, 1).EntireRow.Insert shift:=xlDown
                End If
        'on remet Insertion à faux avant d'arrêter la Macro pour pouvoir la réutiliser
        Insertion = False
            End If
        End If
     
    'collage de la sélection dans la nouvelle ligne'
    Sheets(ActiveSheet).Range("la dernière ligne de la feuille active").Copy Destination:=Sheets("Catalogue").Range("a16") 'je ne comprends pas à quoi sert ce Range à la fin '
     
    End If
     
    End Sub
    Si quelqu'un peut m'aider avec mes piètres connaissances en VBA ....
    Merci par avance, Bonne jounée
    Fichiers attachés Fichiers attachés

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