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.Paste

J'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 Sub

Merci beaucoup pour votre aide !

Bonjour,

La syntaxe est ;

        ActiveSheet.Paste

aprè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.

Bonjour,

j'aurais vu ça comme ceci à toi de continuer

P.

11mg44-xlp.xlsm (17.88 Ko)

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 Sub

Merci 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 !

Rechercher des sujets similaires à "couper coller valeur conditionnelle"