Lier 2 codes VBA
Bonjour,
Je débute sur VBA et je ne parviens pas à lier deux codes que j'ai créer.
Dans un premier temps je souhaite Copier une ligne d'une première page ce que je parviens à faire à l'aide du code suivant.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ldeb As Long
Dim lfin As Long
ldeb = 2
lfin = 65536
If Not Intersect(Target, Range("D" & ldeb & ":D" & lfin)) Is Nothing And Target.Count = 1 Then
Select Case MsgBox("Voulez vous Archiver la ligne : " & Cells(Target.Row, 2) & " ?", vbOKCancel + vbQuestion, "Petite Question :)")
Case vbOK
Target.EntireRow.Copy
Sheets("Fait").Activate
End Select
End If
End SubEnsuite je voudrais pouvoir coller la ligne que je viens de copier sur une autre feuille mais les une derrières les autres.
J'ai créer un code mais il ne fonctionne qu'avec un bouton.
Private Sub Elimination()
ActiveCell.EntireRow.Copy
Sheets("Fait").Activate
For i = 1 To 30000
If Sheets("Fait").Cells(i, 1) > 0 Then Sheets("Fait").Range(Cells(i + 1, 1), Cells(i + 1, 2)).Select
Next
ActiveCell().PasteSpecial
Sheets("A Faire").Activate
End SubJe voudrais donc que les deux ne fassent qu'un.
Pourriez vous m'aider?
Par ailleurs j'en profite pour vous demander de quelle manière je pourrais procéder pour que lorsque je clique sur un case de ma colonne D je ne sélectionne pas toute la ligne mais seulement les cases de A à C de la même ligne.
Finalement je voulais savoir s'il était possible de créer un liste déroulante de formules. Car même si je crée une liste déroulante à partir d'une plage de cellules contenant des formules Excel ne prend que les résultats. Doit on passer par excel?
Je vous remercie d'avance pour vos réponses et du temps que vous me consacrez.
Salut et bienvenue sur le Forum,
Afin d’appeler la macro_2 depuis la macro_1, tu places l’instruction call macro_2 (ou simplement macro_2) dans le code de la macro_1.
Ca ne fonctionne apparemment pas avec une Private Sub () (mais pourquoi avoir une Private Sub () dans ton cas, est-ce bien nécessaire ?).
Par contre tes deux codes sont faits de bric et de broc et il semble impossible de les lier simplement comme ça , ils ne sont pas du tout fais l'un pour l'autre. Comme tes codes semblent être de simples codes d’essai, je ne me casse pas la tête à les corriger.
Une prochaine fois, place un fichier exemple, c’est quand même plus facile pour nous pour tester tes codes sans devoir créer un fichier avec les feuilles nécessaires et tout ça.
Et puis ne pose pas 36 milles questions à la fois, tu vas en décourager plus d’un. Un conseil pour un tel Forum : 1 seul sujet = 1 fil. Deux sujets bien distincts = 2 fils.
Cordialement.
Bonjour
Juste une idée pour tes 2 premières questions
Code à placer dans le module de la feuille "A faire"
Si clic dans une cellule de la colonne D à partir de la ligne 2, après confirmation copie les colonnes A à D
Attention : Impérativement une donnée dans la colonne A
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 1 And Target.Column = 4 And Target.Count = 1 Then
If MsgBox("Voulez vous Archiver la ligne : " & Target.Row & " ?", vbYesNo + vbQuestion, "Petite Question :)") <> vbYes Then Exit Sub
Range("A" & Target.Row).Resize(1, 4).Copy Sheets("Fait").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End If
End SubBonjour,
Merci beaucoup à vous deux pour vos réponses rapides.
Yvouille : J'ai réussi à faire fonctionner mes macros avec le call.
Banzai64 : Vraiment merci c'est exactement le résultat que je cherchais. Ce que j'avais fait était un peu brouillon ><
Je vous mets le fichier pour que vous puissiez voir le résultat. La prochaine fois je le mettrais direct c'est vrai que ce sera plus simple pour comprendre et je me contenterais d'une question ^^
Super forum !