Tableau

Pasc11q

XLDnaute Nouveau
Bonjour a tous, j'ai deux tableau et j'aimerais que les numéro en jaune dans le tableau b sois dans une autre colonne ou que les numéro identique des 2 tableau sois effacé. Est ce possible et merci d'avance.
 

Pièces jointes

  • Tableau.xls
    47.5 KB · Affichages: 48
  • Tableau.xls
    47.5 KB · Affichages: 51
  • Tableau.xls
    47.5 KB · Affichages: 45

JCGL

XLDnaute Barbatruc
Re : Tableau

Bonjour à tous,

Peux-tu essayer avec ceci ( à finalser car je ne suis pas certain d'avoir compris) :

VB:
Option Explicit

Sub Isole()
Dim Lig&, DerL&, C_Lig&
DerL = Feuil1.Range("E" & Rows.Count).End(3).Row

C_Lig = 1
With Feuil1
Range("D3:D" & DerL).FormulaR1C1 = "=IF(RC[1]="""",1,COUNTIF(R3C1:R200C1,RC[1]))"
For Lig = DerL To 3 Step -1
If Cells(Lig, "D") = 0 Then
Range("E" & Lig & ":G" & Lig).Cut Feuil2.Range("A" & C_Lig)
C_Lig = C_Lig + 1
End If
Next
End With
Columns("D:D").Clear
End Sub

A+ à tous
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Tableau

Bonjour Pasc11q, Jean-Claude, le forum,

Il peut y avoir des numéros sans doublon à conserver dans les 2 tableaux :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, a$
Application.ScreenUpdating = False
Feuil1.[A:G].Copy [A1] 'Feuil1 est le CodeName de la feuille source
Set P = Me.UsedRange.Offset(2) 'décalage à cause des 2 lignes de titres
'---colonne D pour Tableau A---
With P.Columns(4)
  a = P.Columns(6).Address(ReferenceStyle:=xlR1C1)
  .FormulaR1C1 = "=1/IF(RC2<>"""",COUNTIF(" & a & ",RC2)=0)"
  .Value = .Value 'supprime les formules
  Range("A3", .Cells).Sort .Cells, xlAscending, Header:=xlNo 'tri pour accélérer
End With
'---colonne H pour Tableau B---
With P.Columns(8)
  a = P.Columns(2).Address(ReferenceStyle:=xlR1C1)
  .FormulaR1C1 = "=1/IF(RC6<>"""",COUNTIF(" & a & ",RC6)=0)"
  .Value = .Value 'supprime les formules
  Range("E3", .Cells).Sort .Cells, xlAscending, Header:=xlNo 'tri pour accélérer
End With
'---supprime les valeurs d'erreur (doublons et cellules vides)---
'On Error Resume Next 'inutile puisqu'avec le décalage il y a des cellules vides
Intersect([A:D], [D:D].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
Intersect([E:H], [H:H].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
[D:D,H:H].ClearContents
Set P = Me.UsedRange 'actualise la barre de défilement verticale
End Sub
La macro est dans le code de la 2ème feuille et se déclenche quand on active cette feuille.

Edit : On Error Resume Next est toujours inutile quand il y a des titres.

Fichier joint.

A+
 

Pièces jointes

  • Supprimer doublons(1).xls
    75 KB · Affichages: 31
Dernière édition:

job75

XLDnaute Barbatruc
Re : Tableau

Re,

Pour finir, un code plus "ramassé" :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, a$
Application.ScreenUpdating = False
Feuil1.[A:G].Copy [A1] 'Feuil1 est le CodeName de la feuille source
Set P = Me.UsedRange.Offset(2) 'décalage à cause des 2 lignes de titres
'---colonne D pour Tableau A, colonne H pour Tableau B---
For Each P In Union(P.Columns(4), P.Columns(8)).Areas
  a = P.Offset(, IIf(P.Column = 4, 2, -6)).Address(ReferenceStyle:=xlR1C1)
  P.FormulaR1C1 = "=1/IF(RC[-2]<>"""",COUNTIF(" & a & ",RC[-2])=0)"
  P = P.Value 'supprime les formules
  Range(P.Offset(, -3), P).Sort P, xlAscending, Header:=xlNo 'tri pour accélérer
Next
'---supprime les valeurs d'erreur (doublons et cellules vides)---
'On Error Resume Next 'inutile puisqu'avec le décalage il y a des cellules vides
Intersect([A:D], [D:D].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
Intersect([E:H], [H:H].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
[D:D,H:H].ClearContents
Set P = Me.UsedRange 'actualise la barre de défilement verticale
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Supprimer doublons(2).xls
    75.5 KB · Affichages: 28

job75

XLDnaute Barbatruc
Re : Tableau

Bonjour Pasc11q, JC, le forum,

Maintenant cette macro étudie les doublons des colonnes A et E "scelle" :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, a$
Application.ScreenUpdating = False
Feuil1.[A:G].Copy [A1] 'Feuil1 est le CodeName de la feuille source
Set P = Me.UsedRange.Offset(2) 'décalage à cause des 2 lignes de titres
'---colonne D pour Tableau A, colonne H pour Tableau B---
For Each P In Union(P.Columns(4), P.Columns(8)).Areas
  a = P.Offset(, IIf(P.Column = 4, 1, -7)).Address(ReferenceStyle:=xlR1C1)
  P.FormulaR1C1 = "=1/IF(RC[-3]<>"""",COUNTIF(" & a & ",RC[-3])=0)"
  P = P.Value 'supprime les formules
  Range(P.Offset(, -3), P).Sort P, xlAscending, Header:=xlNo 'tri pour accélérer
Next
'---supprime les valeurs d'erreur (doublons et cellules vides)---
'On Error Resume Next 'inutile puisqu'avec le décalage il y a des cellules vides
Intersect([A:D], [D:D].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
Intersect([E:H], [H:H].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
[D:D,H:H].ClearContents
Set P = Me.UsedRange 'actualise la barre de défilement verticale
End Sub
J'ai juste modifié les lignes 8 (a) et 9 de la macro.

Fichier (3).

Bonne journée et A+
 

Pièces jointes

  • Supprimer doublons(3).xls
    76 KB · Affichages: 26

Discussions similaires

Statistiques des forums

Discussions
312 723
Messages
2 091 346
Membres
104 884
dernier inscrit
dadu999