Créer une macro avec condition
Résolu
asmascetti
Messages postés
4
Statut
Membre
-
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
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
-
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
-
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
-
-
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 -
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-
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 -
-
-
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