Microsoft 365 Effacer automatiquement une valeur a double déjà présente sur une autre feuille

Piksaw

XLDnaute Junior
Bonsoir,

je cherche à déplacer des valeurs entre plusieurs feuilles.

j'ai une feuille1, feuille2, feuille3, feuille4, j'aimerais que les feuilles communique entre elle, que si dans la feuille1 dans la colonne B, j'ai la valeur 6 et que je décide d'écrire cette valeur dans la feuille 2 en colonne B, qu'elle s'efface de la feuille1 et vice versa pour éviter qu'une même valeur apparaissent deux fois, En gros j'aimerais pouvoir déplacer une même valeur de feuille en feuille sans avoir besoin chaque fois d'effacer manuellement. Le but c'est que je n'ai jamais deux fois la même valeur sur toute les feuilles.

merci de votre aide
 

Pièces jointes

  • testxlsm.xlsm
    64.9 KB · Affichages: 6

Jacky67

XLDnaute Barbatruc
Bonsoir,

je cherche à déplacer des valeurs entre plusieurs feuilles.

j'ai une feuille1, feuille2, feuille3, feuille4, j'aimerais que les feuilles communique entre elle, que si dans la feuille1 dans la colonne B, j'ai la valeur 6 et que je décide d'écrire cette valeur dans la feuille 2 en colonne B, qu'elle s'efface de la feuille1 et vice versa pour éviter qu'une même valeur apparaissent deux fois, En gros j'aimerais pouvoir déplacer une même valeur de feuille en feuille sans avoir besoin chaque fois d'effacer manuellement. Le but c'est que je n'ai jamais deux fois la même valeur sur toute les feuilles.

merci de votre aide
Bonjour,
Une proposition en pj avec ce code
-Les feuilles en question ont été renommées
-Les codes dans ces feuilles supprimés
-Ce code est à placer dans le thisworkbook
Cet exemple supprime la ligne dans les autres feuilles si le n° de devis est déjà présent dans ces feuilles. Elle ne tient compte d'aucun autre code déjà présent dans ce classeur.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'la ligne ci-dessous est facultative et peut être supprimée
                MsgBox "La ligne " & Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).Row & " de la feuille ''" & Sh.Name & "'' sera supprimée."
                Sh.Rows(40).Insert
                Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).EntireRow.Delete
            End If
        End If
    Next
End Sub
 

Pièces jointes

  • testxlsm.xlsm
    66.3 KB · Affichages: 6
Dernière édition:

Piksaw

XLDnaute Junior
Bonjour,
Une proposition en pj avec ce code
-Les feuilles en question ont été renommées
-Les codes dans ces feuilles supprimés
-Ce code est à placer dans le thisworkbook
Cet exemple supprime la ligne dans les autres feuilles si le n° de devis est déjà présent dans ces feuilles. Elle ne tient compte d'aucun autre code déjà présent dans ce classeur.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'la ligne ci-dessous est facultative et peut être supprimée
                MsgBox "La ligne " & Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).Row & " de la feuille ''" & Sh.Name & "'' sera supprimée."
                Sh.Rows(40).Insert
                Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).EntireRow.Delete
            End If
        End If
    Next
End Sub
Bonjour,

merci beaucoup ça fonctionne parfaitement :)

sur ce forum y a vraiment des gens super doué, merci encore de partager vos connaissances
 

Piksaw

XLDnaute Junior
Bonjour,
Une proposition en pj avec ce code
-Les feuilles en question ont été renommées
-Les codes dans ces feuilles supprimés
-Ce code est à placer dans le thisworkbook
Cet exemple supprime la ligne dans les autres feuilles si le n° de devis est déjà présent dans ces feuilles. Elle ne tient compte d'aucun autre code déjà présent dans ce classeur.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'la ligne ci-dessous est facultative et peut être supprimée
                MsgBox "La ligne " & Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).Row & " de la feuille ''" & Sh.Name & "'' sera supprimée."
                Sh.Rows(40).Insert
                Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).EntireRow.Delete
            End If
        End If
    Next
End Sub
Bon après quelque test dans mon fichier original, je rencontre un petit beug

enfaite j'ai une macro en bouton qui envoie les infos dans une des feuilles mais quand je clique j'ai une erreur au niveau du format numérique du nombre je joint le fichier avec la feuille qui permet d'envoyé les infos au différente feuille
 

Pièces jointes

  • test2.xlsm
    64.5 KB · Affichages: 3

Jacky67

XLDnaute Barbatruc
Bon après quelque test dans mon fichier original, je rencontre un petit beug

enfaite j'ai une macro en bouton qui envoie les infos dans une des feuilles mais quand je clique j'ai une erreur au niveau du format numérique du nombre je joint le fichier avec la feuille qui permet d'envoyé les infos au différente feuille
Re...
Ce classeur est incomplet, et en l'état, il m'est impossible de donner suite.
Le code que j'ai donné et une procédure évènementielle qui se lance à la modification du n° de devis et non pas par un bouton.
 

Piksaw

XLDnaute Junior
Bon après quelque test dans mon fichier original, je rencontre un petit beug

enfaite j'ai une macro en bouton qui envoie les infos dans une des feuilles mais quand je clique j'ai une erreur au niveau du format numérique du nombre je joint le fichier avec la feuille qui permet d'envoyé les infos au différente feuille


je vais nettoyer un peu mon fichier pour enlever les donnée sensible et le reposter pour que tu puisse avoir quelque chose de complet.

enfaite dans les differente feuille je n'écris pas manuellement les donnée elle vient d'un formulaire qui vient les copier dans une des feuilles avec un bouton


enfaite quand je lance la copie des donnée via mon formulaire sur une des feuille ou il y a le code vba qui empêche les doublons j'ai une erreur à ce niveau la





Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
For Each Sh In Sheets(Array("En suivant intérieur", "En suivant extérieur", "En attente", "Sous garanti"))
If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
If Sh.Name <> ActiveSheet.Name Then
If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
'la ligne ci-dessous est facultative et peut être supprimée
Sh.Rows(40).Insert
Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).EntireRow.Delete
End If
End If
Next
End Sub


Je pense que ça me met cette erreur car il faudrait qu’à la place de IsNumeric il accepte plutôt une valeur quelconque plutôt qu’un format nombre
 

Pièces jointes

  • test3.xlsm
    101.2 KB · Affichages: 1
Dernière édition:

Piksaw

XLDnaute Junior
Bonsoir a tous


A près plusieurs recherche, je pense avoir compris ce qui ne fonctionne pas dans le code ci-dessus , enfaite je me suis mal exprimé ce que je voudrais c'est que si je sélectionne une ligne par exemple dans la feuille 1 et que je la colle dans la feuille 2 elle s'enlève dans la feuille 1

il faudrai que ça fonctionne sur les 4 feuilles, afin d'éviter les ligne a double

Avec le code ça fonctionne uniquement si je tape une valeur dans la colonne A qui existe déjà dans une des autre feuille

si une âme charitable pourrait me modifier le code ça serait super


je joint un nouveau fichier beaucoup plus claire afin de mieux comprendre
 

Pièces jointes

  • test4.xlsx
    30.1 KB · Affichages: 2

Jacky67

XLDnaute Barbatruc
Bonsoir a tous


enfaite je me suis mal exprimé ce que je voudrais c'est que si je sélectionne une ligne par exemple dans la feuille 1 et que je la colle dans la feuille 2 elle s'enlève dans la feuille 1

il faudrai que ça fonctionne sur les 4 feuilles, afin d'éviter les ligne a double

Bonsoir a tous


... enfaite je me suis mal exprimé ce que je voudrais c'est que si je sélectionne une ligne par exemple dans la feuille 1 et que je la colle dans la feuille 2 elle s'enlève dans la feuille 1

il faudrai que ça fonctionne sur les 4 feuilles, afin d'éviter les ligne a double
Bonjour,
Une proposition avec un double clic sur une ligne contenant un devis
 

Pièces jointes

  • test4.xlsm
    64 KB · Affichages: 4
Dernière édition:

Piksaw

XLDnaute Junior
Une proposition avec un double clic sur une ligne contenant un devis
Hello Jacky67

J'aime bien ton idée de pouvoir cliquer dessus et avoir le choix, c'est top franchement :)

est-ce que tu arriverais à modifier le code pour qu'il copie uniquement les valeurs de la ligne car j'ai des couleur de fond différents sur les feuilles et il me la prend avec



Afin de combiner tes deux idée car elle sont bien complémentaire. La premier code que tu as poster je pense savoir ce qu'il faudrait modifier pour que ça fonctionne correctement enfaite au lieu d'avoir cette ligne

If Sh.Name <> ActiveSheet.Name Then

qui d'après ce que je comprend va checker dans la feuille active, il faudrait plutôt lui dire regarde uniquement dans la feuille 1 si tu vois une valeur qui existe déjà sur les feuille 2 ou 3 ou 4 alors enlève la ligne.


If Sh.Name <> Sheet"feuille1".Name Then le soumis c'est que je connais pas le code pour lui dire de regarder dans une feuille précise
 
Dernière édition:

Piksaw

XLDnaute Junior
Merci beaucoup de prendre le temps pour m'aider c'est top comme cela :)

je suis désoler j'ai de la peine a formuler ma demande le fait de pouvoir copier les valeur d'une une feuille a l'autre est génial avec ta méthode. Je vais garder ton code et l'ajouter a mon fichier original.


la dernière petite chose serait avec ton premier code de lui dire que si maintenant un numéro de devis apparait dans la feuille( que j'ai appeler échéancier), il faudrait a ce moment qu'il enlève dans les autre feuilles( intérieur, extérieur, en attente, sous garanti) la ligne ou le numéro apparait. Car si le numéro arrive dans l'échéancier ça voudrait dire que le chantier va débuter donc il n'y plus lieu d'être dans les autre fiche
 

Piksaw

XLDnaute Junior
Bonjour,
Une proposition en pj avec ce code
-Les feuilles en question ont été renommées
-Les codes dans ces feuilles supprimés
-Ce code est à placer dans le thisworkbook
Cet exemple supprime la ligne dans les autres feuilles si le n° de devis est déjà présent dans ces feuilles. Elle ne tient compte d'aucun autre code déjà présent dans ce classeur.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'la ligne ci-dessous est facultative et peut être supprimée
                MsgBox "La ligne " & Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).Row & " de la feuille ''" & Sh.Name & "'' sera supprimée."
                Sh.Rows(40).Insert
                Sh.Cells(Sh.Application.Match(Target, Sh.[b:b], 0), 2).EntireRow.Delete
            End If
        End If
    Next
End Sub
Hello Jacky 67

j'ai pratiquement réussi a intégrer tes deux codes, il me manque juste un petit détail

dans ton code il efface la ligne entière et j'aimerais si c'est possible qu'il efface uniquement les colonne A, C,D,E,F,G de la ligne mais qu'il n'efface pas la ligne B
 

Jacky67

XLDnaute Barbatruc
Hello Jacky 67

j'ai pratiquement réussi a intégrer tes deux codes, il me manque juste un petit détail

dans ton code il efface la ligne entière et j'aimerais si c'est possible qu'il efface uniquement les colonne A, C,D,E,F,G de la ligne mais qu'il n'efface pas la ligne B
Re...
Le code que tu montres n'efface pas la ligne, mais la supprime
Bien que je ne comprennes pas ton cheminement, ni comment ton projet doit fonctionner, le code ci dessous fait ce que tu demandes.
Pour moi, un devis ou une facture ont un n° unique, et ceci à la saisie de ce devis ou facture.
Il ne doit pas être possible d'avoir un doublon.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'efface A, C,D,E,F,G
                Intersect(Sh.Rows(Sh.Application.Match(Target, Sh.[b:b], 0)), Sh.Range("a:a,c:g")).ClearContents
            End If
        End If
    Next
End Sub
 
Dernière édition:

Piksaw

XLDnaute Junior
Re...
Le code que tu montres n'efface pas la ligne, mais la supprime
Bien que je ne comprennes pas ton cheminement, ni comment ton projet doit fonctionner, le code ci dessous fait ce que tu demandes.
Pour moi, un devis ou une facture ont un n° unique, et ceci à la saisie de ce devis ou facture.
Il ne doit pas être possible d'avoir un doublon.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sh In Sheets(Array("Intérieur", "Extérieur", "Attente", "Garanti"))
        If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
        If Sh.Name <> ActiveSheet.Name Then
            If IsNumeric(Application.Match(Target, Sh.[b:b], 0)) Then
                'efface A, C,D,E,F,G
                Intersect(Sh.Rows(Sh.Application.Match(Target, Sh.[b:b], 0)), Sh.Range("a:a,c:g")).ClearContents
            End If
        End If
    Next
End Sub
Re,
top ça fonctionne :)

ta première formule qui supprime la ligne était top mais pour une raison que j'ignore quand j'envoie via un formulaire de saisie les info par exemple dans la feuille travaux intérieur il me copie bien la ligne mais au moment ou je clique sur le bouton macro enregistrer pour envoyer les info dans la foulé j'ai ton code qui me dit qu'il va supprimer la cellule ou y a le numéro de devis du coup je me retrouve dans la feuille travaux intérieur avec toute la ligne copier mais dans la colonne B j'ai plus le numéro de devis
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 145
Membres
112 669
dernier inscrit
Guigui2502