Créer une macro avec condition

Résolu
asmascetti Messages postés 4 Statut Membre -  
asmascetti Messages postés 4 Statut Membre -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. asmascetti Messages postés 4 Statut Membre
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  3. asmascetti Messages postés 4 Statut Membre
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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. asmascetti Messages postés 4 Statut Membre
       
      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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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