Microsoft 365 Macro VBA avec déplacement de ligne et suppression

acces seb

XLDnaute Nouveau
Bonjour à tous.

Je suis en galère depuis plusieurs jours sur un tableau.
Je vous joint le tableau sur lequel je travaille. Mon objectif est que si une cde est terminée dans l'onglet suivi cdes dans la colonne K, celle ci soit automatiquement renvoyée vers l'onglet recap et disparaisse de l'onglet suivi cdes.
Dans le même temps, lors de la saisie de ma cde en "suivi cde", celle ci crée automatiquement une ligne dans CDES FR. Je voudrais aussi que celle ci soit automatiquement renvoyée vers l'onglet recap FR et supprimée de l'onglet "CDES FR"lorsque le oui de la colonne D est complétée (automatiquement par l'onglet "suivi cde")

Enfin, je voudrais par le biais du tri n'apparaisse sur mon tableau suivi cdes et cdes FR (qui sont liés) que les cellules non vides.
 

Pièces jointes

  • C 2.xlsx
    407 KB · Affichages: 6

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Décidément... Doublon, non ?
Faites remonter votre fil de discussion en vous répondant à vous même si vous êtes pressé, ne créez pas une nouvelle discussion.

Je suis conscient que ma réponse ne vous a sans doute pas plu. Mais elle voulait vous montrer qu' ici on demande à ceux qui cherche un dépannage de participer à la résolution de leur propre problème et non pas de demander du tout cuit, surtout sous forme de cahier des charges, comme vous le faites. si c'est du tout cuit que vous voulez alors voyez une société de service.

Posez-vous les bonnes questions. Quand je vous ai répondu, hier, votre demande avait déjà 52 vues et vous n'aviez pas une seule réponse. C'est que la demande était mal formulée.

Allez lire la charte du forum pour apprendre à rédiger vos demandes.

P.S. LES MAJUSCULES SUR UN FORUM ET INTERNET EN GENERAL SONT COMME CRIER DANS UN COULOIR ! ON ENTEND QUELLES MAIS ON NE COMPREND RIEN DU TOUT ET NE FONT PAS AVANCER LE SCHMILBLICK. DE PLUS MES CAMARADES ET MOI NE SOMMES PAS SOURDS;
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Acces Seb, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change ci-dessous :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RF As Worksheet 'déclare la variable RF (onglet Recap Fr)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim PL As Range 'déclare la variable PL (PLage)

'si le changement a lieu ailleurs que dans la colonne 11 ou dans la ligne 1, sort de la procédure
If Target.Column <> 11 Or Target.Row = 1 Then Exit Sub
Set RF = Worksheets("recap fr") 'définit l'onglet RF
Set TS = RF.ListObjects(1) 'définit le tableau tructuré TS
If Target.Value = "OUI" Then 'condition "si la cible vaut "OUI"
    Set R = TS.ListColumns(1).Range.Find("") 'définit la recherche R (recherche du vide dans la colonne 1 de TS)
    If R Is Nothing Or TS.ListRows.Count = 0 Then 'si aucune occurrence n'est trouvée ou si TS ne contient pas encore de ligne
        TS.ListRows.Add 'ajoute une ligne à TS
        LI = TS.ListRows.Count 'définit la ligne LI (dernière ligne de TS)
    Else 'sinon (au moins une occurrence trouvée)
        LI = R.Row - TS.HeaderRowRange.Row 'définit la ligne LI (ligne de le première occurrence trouvée moins la ligne des en-têtes de TS)
    End If 'fin de la condition
    Set PL = Me.Cells(Target.Row, 1).Resize(1, 12) 'définit la plage PL
    TS.ListRows(LI).Range.Value = PL.Value 'récupère dans la ligne LI de tS les valeurs de la plage PL
    PL.Delete xlUp 'supprime la ligne LI
End If 'fin de la condition
End Sub

Le fichier :
 

Pièces jointes

  • Seb_ED_v01.xlsm
    401.2 KB · Affichages: 4

acces seb

XLDnaute Nouveau
Bonjour,

Décidément... Doublon, non ?

Faites remonter votre fil de discussion en vous répondant à vous même si vous êtes pressé, ne créez pas une nouvelle discussion.

Je suis conscient que ma réponse ne vous a sans doute pas plu. Mais elle voulait vous montrer qu' ici on demande à ceux qui cherche un dépannage de participer à la résolution de leur propre problème et non pas de demander du tout cuit, surtout sous forme de cahier des charges, comme vous le faites. si c'est du tout cuit que vous voulez alors voyez une société de service.

Posez-vous les bonnes questions. Quand je vous ai répondu, hier, votre demande avait déjà 52 vues et vous n'aviez pas une seule réponse. C'est que la demande était mal formulée.

Allez lire la charte du forum pour apprendre à rédiger vos demandes.

P.S. LES MAJUSCULES SUR UN FORUM ET INTERNET EN GENERAL SONT COMME CRIER DANS UN COULOIR ! ON ENTEND QUELLES MAIS ON NE COMPREND RIEN DU TOUT ET NE FONT PAS AVANCER LE SCHMILBLICK. DE PLUS MES CAMARADES ET MOI NE SOMMES PAS SOURDS;
Bonjour. Je vais essayer de mieux rédiger mes demandes dans l'avenir et oui j'ai de nouveau demandé de l'aide car le post précédent était posté un we.
Pour ce qui est de votre réponse d'hier, celle ci n'est pas explicite et je ne comprenais pas votre démarche. C'est plus clair aujourd'hui. En revanche, sauf erreur de ma part, je n'ai en aucun cas écrit en majuscule, je ne comprends donc toujours pas votre PS (je pense d'ailleurs que nous ne nous comprendrons pas).
Merci néanmoins du temps passé de votre part. Vous remarquerez d'ailleurs que je souhaite faire une formation sur le sujet des macro pour à mon tour mieux comprendre et pouvoir apporter mon aide. Bien à vous
 

acces seb

XLDnaute Nouveau
Bonjour Acces Seb, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change ci-dessous :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RF As Worksheet 'déclare la variable RF (onglet Recap Fr)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim PL As Range 'déclare la variable PL (PLage)

'si le changement a lieu ailleurs que dans la colonne 11 ou dans la ligne 1, sort de la procédure
If Target.Column <> 11 Or Target.Row = 1 Then Exit Sub
Set RF = Worksheets("recap fr") 'définit l'onglet RF
Set TS = RF.ListObjects(1) 'définit le tableau tructuré TS
If Target.Value = "OUI" Then 'condition "si la cible vaut "OUI"
    Set R = TS.ListColumns(1).Range.Find("") 'définit la recherche R (recherche du vide dans la colonne 1 de TS)
    If R Is Nothing Or TS.ListRows.Count = 0 Then 'si aucune occurrence n'est trouvée ou si TS ne contient pas encore de ligne
        TS.ListRows.Add 'ajoute une ligne à TS
        LI = TS.ListRows.Count 'définit la ligne LI (dernière ligne de TS)
    Else 'sinon (au moins une occurrence trouvée)
        LI = R.Row - TS.HeaderRowRange.Row 'définit la ligne LI (ligne de le première occurrence trouvée moins la ligne des en-têtes de TS)
    End If 'fin de la condition
    Set PL = Me.Cells(Target.Row, 1).Resize(1, 12) 'définit la plage PL
    TS.ListRows(LI).Range.Value = PL.Value 'récupère dans la ligne LI de tS les valeurs de la plage PL
    PL.Delete xlUp 'supprime la ligne LI
End If 'fin de la condition
End Sub

Le fichier :
Bonjour et merci du temps passé et de votre aide. J'essaierai la macro en rentrant ce soir. Encore merci.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re
En revanche, sauf erreur de ma part, je n'ai en aucun cas écrit en majuscule, je ne comprends donc toujours pas votre PS
Et votre titre alors ?
(je pense d'ailleurs que nous ne nous comprendrons pas).
C'est bien dommage que de penser ça, vous vous condamnez vous-même à ne faire qu'avec ceux que vous comprenez, mais c'est vrai, rares sont les gens capables d'assumer la différence quand elle fait conflit.
oui j'ai de nouveau demandé de l'aide car le post précédent était posté un we.
Comme dit dans mon précédent post, il suffit de vous répondre à vous même, pour que votre discussion remonte dans la liste.
 

acces seb

XLDnaute Nouveau
Re

Et votre titre alors ?
C'est une maladresse de ma part, mille excuses.
C'est bien dommage que de penser ça, vous vous condamnez vous-même à ne faire qu'avec ceux que vous comprenez, mais c'est vrai, rares sont les gens capables d'assumer la différence quand elle fait conflit.

Comme dit dans mon précédent post, il suffit de vous répondre à vous même, pour que votre discussion remonte dans la liste.
Je veux bien discuter mais j'ai le sentiment à vous lire que vous êtes dans le jugement et que vous n'accordez pas à l'autre la possibilité d'avoir fait une erreur ou de ne pas maitriser correctement les outils. En l’occurrence, j'ai bien compris la problématique de post qu'il fallait faire remonter.
Passez une belle fin de journée
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil,

Hasco, que je vénère et que j'ai zappé lors de mon premier post car je navet pas rafraîchi, est en train de nous faire un caca nerveux... Ça me fait marrer car j'ai très souvent ce même type de comportement...
 

Discussions similaires

J
Réponses
39
Affichages
3 K
J

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83