Créer une macro avec condition

Résolu
asmascetti Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
asmascetti Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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


A voir également:

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
asmascetti Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
asmascetti Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
asmascetti Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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