Tri numérique puis alphabétique après un couper-coller

Si vous avez le temps, ça sera avec plaisir !

Je fais surtout de la bidouille avec la VBA. Je retrouve des codes que j'essaie de modifier

Et voici, petit truc très amusant ...

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim lo1 As ListObject, lo2 As ListObject
Set lo1 = sh.ListObjects(1)

    If Intersect(Target, lo1.ListColumns("ETAT").DataBodyRange) Is Nothing Then Exit Sub

    Application.EnableEvents = False

    If Intersect(Target, lo1.ListColumns("ETAT").DataBodyRange).Count > 1 Then
        Application.Undo
        MsgBox "Une seule modification à la fois ... sinon c'est le bazar !"
    Else
        If Target.Value <> sh.Name and Target.Value <>"" Then
            transfert sh, Target.Row, Target.Value
        End If
    End If

    Application.EnableEvents = True
End Sub
Sub transfert(sh As Worksheet, ligne As Integer, cible As String)
Dim lo1 As ListObject, lo2 As ListObject
    Set lo1 = sh.ListObjects(1)
    Set lo2 = Sheets(cible).ListObjects(1)
    lo2.ListRows.Add
    lo1.ListRows(ligne - lo1.HeaderRowRange.Row).Range.Copy Destination:=lo2.DataBodyRange(lo2.ListRows.Count, 1)
    sh.Rows(ligne).Delete Shift:=xlUp
    lo2.Sort.Apply
    MsgBox "transfert ok !"
End Sub
6juju-tableaux.xlsm (30.07 Ko)

Merci pour cette simplification.

Lorsque je la passe dans mon tableau personnel, une erreur apparaît

    Set lo2 = Sheets(cible).ListObjects(1)

Je profite de votre savoir-faire pour une autre question.

Dans ce même fichier excel, j'ai en réalité 2 autres feuilles "AB" et "PH". J'ai créé un bouton qui me permet, lorsque je clique dessus, de copier certaines colonnes de la ligne sélectionner si dans la colonne R, il est écrit Oui.

Sub macro_AB()

' POUR LA SELECTION
Sheets("AB").Activate
Range("B8:K170").ClearContents
Sheets("ACTIF").Range("A2:t1500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:t2"), CopyToRange:=Range("Tableau2") _
, Unique:=True

Cela fonctionne parfaitement mais je n'arrive à copier que les éléments de la feuille "ACTIF" et pas ceux des autres colonnes puisqu'à chaque fois, le tableau 2 de la feuille AB est nettoyé.

Ma question : est-il possible d'automatiser cela pour mes 3 feuilles et que dès qu'il est écrit Oui dans la colonne R de l'une de ces feuilles, la ligne soit copiée dans le tableau AB. Si, en revanche, je change pour non, la ligne dans AR se supprime...

Et cela, sans avoir de bouton ??

Merci par avance

juju

Lorsque je la passe dans mon tableau personnel, une erreur apparaît

    Set lo2 = Sheets(cible).ListObjects(1)

par ce que tes données cible ne sont pas structurées en tableau

cela évite d'indiquer le nombre de colonnes et de lignes, et de positionner le tableau où l'on veut dans la feuille

Dans ce même fichier excel, j'ai en réalité 2 autres feuilles "AB" et "PH". J'ai créé un bouton qui me permet, lorsque je clique dessus, de copier certaines colonnes de la ligne sélectionner si dans la colonne R, il est écrit Oui.

Sub macro_AB()

' POUR LA SELECTION
Sheets("AB").Activate
Range("B8:K170").ClearContents
Sheets("ACTIF").Range("A2:t1500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:t2"), CopyToRange:=Range("Tableau2") _
, Unique:=True

Cela fonctionne parfaitement mais je n'arrive à copier que les éléments de la feuille "ACTIF" et pas ceux des autres colonnes puisqu'à chaque fois, le tableau 2 de la feuille AB est nettoyé.

Ma question : est-il possible d'automatiser cela pour mes 3 feuilles et que dès qu'il est écrit Oui dans la colonne R de l'une de ces feuilles, la ligne soit copiée dans le tableau AB. Si, en revanche, je change pour non, la ligne dans AR se supprime...

Et cela, sans avoir de bouton ??

Merci par avance

juju

je ne vais pas pouvoir répondre sans voir un bout de fichier

Bonjour,

En effet, c'est tout c** ! Ca fonctionne parfaitement en créant des tableaux. Le code en soit m'échappe mais cela fonctionne parfaitement.

Pour ce qui est de mon autre question : voici un tableau.

Merci d'avance

Juju

dès qu'il est écrit Oui dans la colonne R de l'une de ces feuilles, la ligne soit copiée dans le tableau AB.

Si, en revanche, je change pour non, la ligne dans AR se supprime...

pas de soucis, sans bouton, je le fais ce soir

mais où est "AR" ?? si c'est un onglet, il faudrait q'il ait la même structure que les autres !

Pardon, la feuille s'appelle AB et non AR ^^

Steelson,

Je vais abuser une dernière fois...

Vous remarquerez que j'ai ajouté une liste des responsables d'affaires dans la feuille Actif.

J'ai une macro qui envoi un mail si la personne n'a pas répondu Oui dans la colonne I. Tout fonctionne parfaitement. Seulement, j'aimerais pouvoir faire en sorte que le mail s'envoi automatique à la date affiché en J15 à 9h si dans la colonne I, il est écrit Non.

Est-ce que cela est possible ?

Comment faire pour que cela s'envoie depuis l'adresse de mon assistante au travail ?

Merci beaucoup !

Promis, après j'arrête d'abuser

Vous remarquerez que j'ai ajouté une liste des responsables d'affaires dans la feuille Actif.

J'ai une macro qui envoi un mail si la personne n'a pas répondu Oui dans la colonne I. Tout fonctionne parfaitement. Seulement, j'aimerais pouvoir faire en sorte que le mail s'envoi automatique à la date affiché en J15 à 9h si dans la colonne I, il est écrit Non.

Pour cela, crée un autre sujet, cela fera appel à d'autres compétences notamment si tu utilises outlook (que je n'ai plus de mon poste), et permettra de faire ultérieurement des recherches en fonction de la thématique.

Pardon, la feuille s'appelle AB et non AR ^^

ok,

tu disais

dès qu'il est écrit Oui dans la colonne R de l'une de ces feuilles, la ligne soit copiée dans le tableau AB.

Si, en revanche, je change pour non, la ligne dans [AB] se supprime...

encore faut-il que cette ligne existe dans AB ! si on n'a pas dit OUI avant elle n'existe pas ! et comment la repérer puisqu'il n'y a pas d'identifiant ... ou alors tu me précises quel est cet identifiant qui me permette de la retrouver.

Pour moi, cela se tord et je pense qu'il ferait mieux de tout conserver sur un seul et unique onglet en filtrant ensuite sur OUI/NON et sur EN VEILLE/PERDU/ACTIF.

Je vais réfléchir à une solution simple, satisfaisante et ... rigolote !

Celui là, je l'aime beaucoup ! c'est un leurre ...

Le choix de l'onglet se fait par la cellule en jaune.

Autre version ...

4juju-segments.xlsm (26.88 Ko)

Bonjour Steelson,

Désolé pour mon retour tardif.

Merci pour ces 2 exemples. Si je n'avais pas nécessité d'avoir les 3 onglets visibles, j'aurais pris avec plaisir tes exemples. Malheureusement, j'ai besoin de ces 3 onglets :/

Dois-je comprendre qu'il n'existe pas de solution pour copier-coller chaque ligne des 3 onglets qui répondent au même critère ?

Bel journée

Juju

C'est donc cette réponse qu'il faut prendre en compte ...

https://forum.excel-pratique.com/viewtopic.php?p=800363#p800363

mais il faut que tu me répondes alors à cette question d'identifiant.

tu disais

dès qu'il est écrit Oui dans la colonne R de l'une de ces feuilles, la ligne soit copiée dans le tableau AB.

Si, en revanche, je change pour non, la ligne dans [AB] se supprime...

encore faut-il que cette ligne existe dans AB ! si on n'a pas dit OUI avant elle n'existe pas ! et comment la repérer puisqu'il n'y a pas d'identifiant ... ou alors tu me précises quel est cet identifiant qui me permette de la retrouver.

J'ai peur de ne pas comprendre la question.

Qu'est ce qu'un identifiant ? Le nom de l'affaire (colonne A) qui est unique dans la réalité ne suffit pas ?

Voici pour la recopie quand oui est introduit en colonne R de l'une ou l'autre des feuilles.

Qu'est ce qu'un identifiant ? Le nom de l'affaire (colonne A) qui est unique dans la réalité ne suffit pas ?

ok, vu pour colonne A unique

où mets-tu le "non" ? et quelle(s) ligne(s) faut-il supprimer ? dans onglet AB seulement ou celui d'origine aussi ?

3juju-tableaux.xlsm (33.63 Ko)

Le non est dans la colonne R également. Soit c'est Oui, soit c'est Non.

Imaginons, dans l'onglet "ACTIF", ligne 4, je mets Oui dans la colonne R, cela copie la ligne dans la feuille AB.

Maintenant, si, sur cette même ligne, je mets Non, alors il faudrait que la ligne qui était présente en AB se supprime (uniquement dans AB).

ok, voici ce que j'en ai compris et traduit

4juju-tableaux.xlsm (37.04 Ko)

Bonjour

C'est exactement cela !!

Juste un problème (c'est ma faute, j'aurais du préciser). Si je ne veux pas copier toute la ligne, mais uniquement quelques colonnes, comment m'y prendre ?

Merci 1000 fois !

PS. Par conséquence, quand je transfert ton code vers mon fichier, j'ai une erreur

Set lo1 = sh.ListObjects(1)

Juste un problème (c'est ma faute, j'aurais du préciser). Si je ne veux pas copier toute la ligne, mais uniquement quelques colonnes, comment m'y prendre ?

ben , tu les masques !

PS. Par conséquence, quand je transfert ton code vers mon fichier, j'ai une erreur

Set lo1 = sh.ListObjects(1)
parce que tes données ne sont pas en tableau !
Rechercher des sujets similaires à "tri numerique puis alphabetique couper coller"