1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2007 En VBA, couper une ligne et la copier plus bas à un endroit précis

Discussion dans 'Forum Excel' démarrée par donpopo, 16 Avril 2018.

  1. donpopo

    donpopo XLDnaute Occasionnel

    Inscrit depuis le :
    14 Mai 2009
    Messages :
    245
    "J'aime" reçus :
    0
    Habite à:
    Liège
    Utilise:
    Excel 2007 (PC)
    Bonsoir le forum,

    Malgré le peu de connaissances que j'ai du VBA et mes recherches sur les forums, je n'arrive pas à terminer ma procédure.
    Lorsque je sélectionne une ligne (OK), je souhaite la vider de son contenu en gardant les formules (OK), puis je désire couper cette ligne et la recoller après la dernière ligne remplie (là je cale)
    J'ai joint un fichier exemple. lorsque je clique sur une case jaune et qu'il y a un collègue, je désire vider cette ligne et la déplacer après le dernier enregistrement, sachant que j'ai deux groupes de collègues.
    Si quelqu'un peut m'aider?
    Merci d'avance,
    Donpopo
     

    Pièces jointes:

  2. Chargement...

    Discussions similaires - VBA couper ligne Forum Date
    VBA : Couper-coller une ligne sur trois d'un classeur Excel vers un autre Forum Excel 31 Janvier 2014
    Couper coller d'une ligne avec condition - VBA Forum Excel 14 Janvier 2014
    VBA-Couper/Coller plusieurs lignes vers plusieurs feuilles (DISPATCH) Forum Excel 9 Mars 2012
    vba rechercher puis couper coller Forum Excel 22 Mars 2017
    Couper coller Doublon VBA Forum Excel 5 Juin 2015

  3. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Bonsoir le fil, le forum

    @donpopo
    Poser une question c'est bien
    Suivre et se manifester dans la précédente, c'est mieux ;)
    https://www.excel-downloads.com/thr...n-fonction-couleur-de-fond-d1-autre.20023867/
    (cf le message#1 où la solution t'attends)

    Pour cette question, une petite question
    Tu utilises déjà ce code ou pas?
    Code (Visual Basic):

    Option Explicit

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)   'Lorsqu'on clique sur une cellule
    Dim xlgn As Long
        If Target.Column = 2 Then
           
            'Vérifie si collègue dans la ligne
            xlgn = Target.Row
            If ActiveSheet.Cells(xlgn, 5) < "01/01/1900" Then
                MsgBox "Aucun collègue ne figure sur cette ligne.", vbInformation, "COMPTES-TITRES"
                Exit Sub
            End If
           
            'Boite de dialogue de confirmation d'archivage
            If MsgBox("Voulez-vous archiver ?" & vbNewLine & "Cela effacera la ligne sélectionnée !", vbExclamation + vbYesNo, "CONFIRMATION") = vbNo Then Exit Sub
            'Deuxième confirmation d'archivage
            If MsgBox("Etes-vous certain ? ?", vbExclamation + vbYesNo, "CONFIRMATION 2") = vbNo Then Exit Sub
       
            'Vider la ligne en gardant les formules, la couper et la coller au bas.
            Range("C" & xlgn & ":ZZ" & xlgn).SpecialCells(xlCellTypeConstants, 23).ClearContents
       
            'Couper la ligne en question et la coller à autre endroit
            Rows("3:xlgn ").Cut
            'Rows("4:4").Insert
        End If
    End Sub
     
     
  4. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    @donpopo
    Je te propose cette macro de test (pour le moment sans les MsgBox)
    Est-ce là le résultat souhaité?
    Code (Visual Basic):

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xlgn As Long
    If Target.Column = 2 And Not IsEmpty(Target.Offset(, 1)) Then
    xlgn = Cells(Rows.Count, 3).End(xlUp).Row + 1
    Target.EntireRow.Cut Rows(xlgn)
    End If
    End Sub
     
     
  5. donpopo

    donpopo XLDnaute Occasionnel

    Inscrit depuis le :
    14 Mai 2009
    Messages :
    245
    "J'aime" reçus :
    0
    Habite à:
    Liège
    Utilise:
    Excel 2007 (PC)
    Bonsoir Staple1600, le forum.
    je viens de placer ta macro dans ma procédure existante. Mais rien de ce que j'attends ne se passe. J'y perd un peu mon latin.

    Je te mets en annexe mon fichier Excel de travail plus important que l'autre. Ne te tracasse pas pour les données. Celles-ci sont fictives; je travaille toujours sur le site de ma banque pour l'instant.

    Ce que je souhaite, c'est lorsque je clique sur la colonne 1 où il est noté Archiv., la ligne sélectionnée soit copiée sur la feuille "Archives" (OK), que cette ligne soit détruite et une nouvelle ligne créée après la ligne 17 ou la ligne 30 avec les mêmes formules et la même mise en forme que la ligne détruite.

    La procédure concernée se trouve sur la feuille "Compte titres X" pour l'instant. Cette procédure est composée de deux parties: si on clique sur colonne 2, on édite un formulaire; si on clique sur la colonne 1, c'est la le problème.

    Plus tard, lorsque ce sera en ordre, je crois que je mettrai cette procédure dans un module, car elle concernera en fait 3 feuilles différentes de compte titres.

    J'espère avoir été assez clair. Si le moindre problème se pose, questionne-moi.

    Merci d'avance,
    donpopo

    P.S.: connaitrais-tu un site ou un bouquin qui reprendrait l'ensemble du vocabulaire VBA? J'ai VBA Excel pour les nuls, mais bof.
     

    Pièces jointes:

  6. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Bonsoir le fil, le forum

    @donpopo
    J'avais testé mon code sur ton premier fichier exemple et cela fonctionnait.
    Il ne fallait placer ma macro dans la tienne mais à la place de la tienne
    (juste pour faire un test)
     
  7. donpopo

    donpopo XLDnaute Occasionnel

    Inscrit depuis le :
    14 Mai 2009
    Messages :
    245
    "J'aime" reçus :
    0
    Habite à:
    Liège
    Utilise:
    Excel 2007 (PC)
    Si je la place dans mon fichier exemple du début cela fonctionne, à part que les lignes se rajoutent bien mais les lignes vidées ne se suppriment pas. Elles se vident mais restent présentes.
     
  8. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    Le titre de ta question était:
    "En VBA, couper une ligne et la copier plus bas à un endroit précis"
    C'est donc se à quoi se borne ma macro ;)

    Testes cette autre macro de test
    Code (Visual Basic):

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xlgn As Long, Alig&
    If Target.Column = 2 And Not IsEmpty(Target.Offset(, 1)) Then
    xlgn = Cells(Rows.Count, 3).End(xlUp).Row + 1
    Alig = Target.Row
    Target.EntireRow.Cut Rows(xlgn)
    Rows(Alig).EntireRow.Delete
    End If
    End Sub
     
     
  9. donpopo

    donpopo XLDnaute Occasionnel

    Inscrit depuis le :
    14 Mai 2009
    Messages :
    245
    "J'aime" reçus :
    0
    Habite à:
    Liège
    Utilise:
    Excel 2007 (PC)
    oui c'est cela. Comme cela c'est parfait.
     
  10. donpopo

    donpopo XLDnaute Occasionnel

    Inscrit depuis le :
    14 Mai 2009
    Messages :
    245
    "J'aime" reçus :
    0
    Habite à:
    Liège
    Utilise:
    Excel 2007 (PC)
    Il ne me reste plus qu'à l'intégrer dans mon fichier.
     

Partager cette page