Couper-coller valeur conditionnelle
Bonjour à tous,
Débutant en VBA, je me retrouve confronté à mon premier casse-tête.
J'aimerais que, lorsque je modifie le contenu d'une cellule dans une feuille (sélection de statut parmi une liste déroulante), en fonction du statut sélectionné, toutes les informations de la ligne se ventilent sur d'autres feuilles du classeur par statut.
Mon code fonctionne jusqu'au moment de coller l'information sur l'autre onglet où j'ai une "erreur exécution '438" Propriété ou Méthode non gérée par cet objet"
ActiveSheet.Derlign.Selection.PasteJ'ai essayé plein de trucs différents, mais là je n'y arrive plus... Je fais donc appel à votre aide
Pour le moment j'en suis là :
Sub statut_modif()
Range("J1", Range("J1").End(xlDown)).Select
Dim Cel As Range
For Each Cel In Range("J1", Range("J1").End(xlDown))
If Cel.Value = "Inactif" Then
Cel.Activate
Call trans_Sortie
ElseIf Cel.Value = "Portabilité" Then
Cel.Activate
Call trans_Sortie
ElseIf Cel.Value = "Intermission" Then
Cel.Activate
Call trans_Intermiss
ElseIf Cel.Value = "Renonc" Then
Cel.Activate
Call trans_Renonc
End If
Next Cel
End Sub
Sub trans_Sortie()
Dim Derlign As Integer
Derlign = IIf([A1] = "", 1, [A5000].End(xlUp).Row + 1)
ActiveCell.EntireRow.Select
Selection.Cut
Worksheets("Sorties").Activate
ActiveSheet.Derlign.Selection.Paste
Application.CutCopyMode = False
End SubMerci beaucoup pour votre aide !
Bonjour,
La syntaxe est ;
ActiveSheet.Pasteaprès sélection de la cellule A?...
Mais il serait mieux d'éliminer de ton code tout Select et Activate, travailler avec des références précises non dépendantes, et ne copier-coller que les données qui doivent l'être (et si l'objectif n'est pas de coller simultanément format et mise en forme, de transférer les valeurs sans copier-coller...) Ce serait plus propre, plus facile à comprendre, et plus rapide.
Cordialement.
Merci à vous deux pour vos réponses !
J'ai tenté de mettre en place ta proposition patrick1957 qui relève d'une solution bien bien loin de ce que je pouvais imaginer et que je vais conserver précieusement !
En revanche une erreur persiste au moment du
Set desti = Ws5.[A65000].End(xlUp)J'ai un message d'erreur qui me dit que la variable "desti =" n'est pas définie, pourtant dans ton code à toi elle fonctionne sans avoir déclaré une variable au préalable, du coup je ne sais pas où j'ai dû faire une erreur...
Public Ws3, Ws4, Ws5, Ws6 As Worksheet
Public Cel As Range
Sub statut_modif()
Set Ws3 = Sheets("Affiliations")
Set Ws4 = Sheets("Intermission")
Set Ws5 = Sheets("Sorties")
Set Ws6 = Sheets("Renonciations")
For Each Cel In Ws3.Range("J1", Ws3.Range("J1").End(xlDown))
If Cel.Value = "" Then Exit Sub
If Cel.Value = "Inactif" Then
Call trans_Sortie("Sorties")
ElseIf Cel.Value = "Portabilité" Then
Call trans_Sortie("Sortie")
ElseIf Cel.Value = "Intermission" Then
Call trans_Sortie("Intermission")
ElseIf Cel.Value = "Renonc" Then
Call trans_Sortie("Renonciations")
End If
Next Cel
End Sub
Sub trans_Sortie(onglet)
If onglet = "Sorties" Then
Set desti = Ws5.[A65000].End(xlUp)
Cel.EntireRow.Copy Destination:=desti(2)
ElseIf onglet = "Intermission" Then
Set desti = Ws4.[A65000].End(xlUp)
Cel.EntireRow.Copy Destination:=desti(2)
ElseIf onglet = "Renonciations" Then
Set desti = Ws6.[A65000].End(xlUp)
Cel.EntireRow.Copy Destination:=desti(2)
End If
End SubMerci encore !
re,
il faut la déclarer au début en "public" , as-tu essayé ?
P.
C'est bon !
Comme une andouille comme ce n'était pas déclaré dans ton code et que ça fonctionnait, j'ai cru que le problème ne pouvait pas venir de là
Merci Beaucoup pour ton aide !