Créer une macro avec condition

Résolu
Bonjour,

je n'arrive pas à créer ma macro
débutante dans ce domaine
je cherche à déplacer les lignes complètes dont les tâches ont été effectué dans le tableau "tâches à effectuer"
on selection la ligne et en cliquant sur un bouton active exemple "ok" la ligne se déplace automatiquement dans le tableau "tâches effectuées"

EXEMPLES SIMPLES

tâches à effectuer
xxxxxxxxx 12/11/2012
bbbbbbbbbbbb 06/12/2012
aaaaaaaaaaaa 04/01/2013

tâches effectuées
ooooooooooo 06/10/2012
tttttttttttttttt 04/06/2012

Merci de votre aide

4 réponses

  1. bonjour

    Une proposition un peu différente de celle de michel (salut à toi)
    Le tableau 1 des taches à effectuer reste "entier" ici en A3:E19, ce qui te permet de rajouter des tâches (à effectuer)

    - à mettre dans le module de la feuille active
    - la macro est à activer par un double clic sur une cellule de la ligne à transférer

    Option Explicit
    
    Const T1 = "A3:E19"
    Const lideb1 = 3
    Const lifin1 = 19
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim li1 As Long, plage1 As String
    Dim lifin2 As Long
    If Target.Value = "" Or Intersect(Target, Range(T1)) Is Nothing Then Exit Sub
    ' ligne à deplacer
    li1 = Target.Row
    plage1 = "A" & li1 & ":E" & li1
    ' 1° ligne vide tableau T2
    lifin2 = Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
    ' copie li1 sur lifin2
    Range(plage1).Copy Cells(lifin2, 1)
    ' remonter les lignes de T1
    If li1 = lifin1 Then
      plage1 = "A" & li1 & ":E" & li1
      Range(plage1).ClearContents
    Else
      For li1 = li1 + 1 To lifin1
        plage1 = "A" & li1 & ":E" & li1
        Range(plage1).Copy Cells(li1 - 1, 1)
        Range(plage1).ClearContents
      Next li1
    End If
    End Sub
    

    bonne suite
    0
    1. je sais que cela n'est pas la procédure mais avez vous un mail auquel je peux vous envoyer le dossier
      la macro ne marche pas
      en attente de vous lire
      merci
      0
      1. Contributeur
        j'ai fait une maquette et ca fonctionnait suivant les spécifications que tu m'as donné

        la maquette (à regarder peut-^tre à la maison)
        https://www.cjoint.com/?3Kmpuk17dKE

        ou por transmettre le dossier utilises la possibilité de message perso de CCM
        0
      2. merci michel_m et ccm81 tout marche chez moi mais au travail c'est une grande histoire
        il me bloque l'accès et je ne peux l'utiliser correctement
        merci encore de votre aide
        0
    2. Contributeur
      Re, comme ta boutique refuse l'accès à cjoint , je ne peux pas t'envoyer ma maquette ! :o(

      Donc:

      1 a macro ci dessous vérifie que la ligne sélectionnée est bien dans le tableau "à effectuer"
      2 elle mémorise les colonnes A à E de la ligne et supprime la ligne
      3 les données sont inscrites à la fin du tableau "effectué"

      Sub transférer_w_effectué() 
      
      lig_w = ActiveCell.Row 
      derlig = Columns("A").Find("", Range("A2")).Row - 1 
      'détecion ligne en dehors du tableau "à réaliser" 
      If derlig < lig_w Then GoTo erreur 
      'mémorise la ligne à transfèrer 
      w_fini = Range(Cells(lig_w, "A"), Cells(lig_w, "E")).Value 
      ' supprime cette ligne ligne 
      Rows(lig_w).Delete 
      
      ligvid = Columns("A").Find("*", , , , , xlPrevious).Row + 1 
      Range("A" & ligvid).Resize(1, 5) = w_fini 
      Exit Sub 
      
      erreur: 
      MsgBox "mauvaise sélection de ligne", vbCritical 
      
      
      End Sub


      edit 14:45 simplifié la macro
      Michel
      0
      1. Contributeur
        Bonjour

        Tes 2 tableaux sont ils sur la même feuille ?

        quelle sont les colonnes utilisées par tes tableaux ?

        au besoin
        mettre le classeur sans données confidentielles en pièce jointe sur
        https://www.cjoint.com/
        puis copier l'adresse du lien et la coller dans le message de réponse
        0
        1. la boite me refuse l'acces à https://www.cjoint.com/
          désolé je ne peux vous joindre mon dossier

          5 colonnes : A - B - C - D - E

          A (numéro des taches)
          B (désignation)
          C (importance)
          D (date a effectuer)
          E nom du technicien

          18 lignes qui concernent les taches à effectuées

          et 6 lignes qui concernent les taches déjà éffectuées

          soit à ta question
          " Tes 2 tableaux sont ils sur la même feuille ? " = OUI

          j'espere vous avoir aidé dans ma réponse

          en vous remerciant d'avance de votre aide
          0