Bonjour,
j'ai un petit problème pour dédoublonner un fichier.
Je précise d'abord que c'est la première macro que j'essaie de faire (j'ai commencé à m'intéresser au VBA il y a 2 semaines et c'est la première macro dans laquelle je me lance).
J'ai pas mal cherché et j'ai trouver des scripts sur les forums (qui traitent les doublons avec des couleurs notamment) mais je ne parviens pas à les adapter avec des valeurs plutôt que des couleurs.
Ce fichier que je cherche à dédoublonner comporte plusieurs colonnes (dont N1, N2 et N3) sur plusieurs dizaines de milliers de lignes (leur nombre augmente dans l'année).
N1 : toutes les lignes ont une valeur, parfois en doublon
N2 : certaines lignes n'ont pas valeur
N3 : toutes les lignes ont une valeur (= durée en jours), elle dépend des valeurs de N1 et sont en doublon comme les valeurs de N1
exemple:
N1......N2.......N3
874565..11157....4
874565..11157....4
874566...........2
874567..11159....3
874568..11160....0
874570..11162....12
874570..11163....12
874570..11164....12
874571...........1
874572...........0
874573...........8
874573...........8
874576..11168....1
Au final, je cherche à calculer :
- le nombre de valeurs de N1 ayant une durée =0 jour, =1 jour et celles dont la durée est >1 jour
- sachant que l'on ne tient compte que des valeurs de N1 dédoublonnées et n'ayant pas de valeur en N2.
dans l'exemple ci-dessus ça ferait donc :
nombre de valeurs en N1 = 0 ==> 1
= 1 ==> 1
> 1 ==> 3
Je voulais procéder ainsi :
- supprimer les lignes pour lesquelles une valeur est renseignées en N2.
- trier la colonne N1 et supprimer les doublons
- compter en N3 le nombre de valeurs =0 , =1 , >1
Une partie de ce que j'ai fait marche, mais le traitement du fichier par la macro est trop lent.
J'ai donc changé la méthode, je ne supprime plus les lignes mais je remplace les valeurs de la colonne N2 par "X", et je voudrai aussi remplacer par "X" celles de la colonne N1 qui sont en doublon.
voici ce que cela donnerait (avec l'exemple précédent):
N1......N2......N3
874565..X.......4
X.......X.......4
874566..........2
874567..X.......3
874568..X.......0
874570..X.......12
X.......X.......12
X.......X.......12
874571..........1
874572..........0
874573..........8
X...............8
874576..X.......1
Il suffirait ensuite de compter les valeurs de N3 pour lesquelles N1<>"X" ET N2<>"X"
Mais je bloque sur la partie où je voudrais remplacer les doublons de N1 par "X".
Quelqu'un peut-il m'aider ? ou me suggérer une méthode plus efficace?
Merci !!!
pour le remplacement des valeurs de la colonne N2 par "X" j'utilise ce code :
Dim Cellule As Range
Dim Plage As Range
Set Plage = Range("B:B")
For Each Cellule In Plage
If Cellule Like "111*" Then Cellule = "X"
Next Cellule
j'ai un petit problème pour dédoublonner un fichier.
Je précise d'abord que c'est la première macro que j'essaie de faire (j'ai commencé à m'intéresser au VBA il y a 2 semaines et c'est la première macro dans laquelle je me lance).
J'ai pas mal cherché et j'ai trouver des scripts sur les forums (qui traitent les doublons avec des couleurs notamment) mais je ne parviens pas à les adapter avec des valeurs plutôt que des couleurs.
Ce fichier que je cherche à dédoublonner comporte plusieurs colonnes (dont N1, N2 et N3) sur plusieurs dizaines de milliers de lignes (leur nombre augmente dans l'année).
N1 : toutes les lignes ont une valeur, parfois en doublon
N2 : certaines lignes n'ont pas valeur
N3 : toutes les lignes ont une valeur (= durée en jours), elle dépend des valeurs de N1 et sont en doublon comme les valeurs de N1
exemple:
N1......N2.......N3
874565..11157....4
874565..11157....4
874566...........2
874567..11159....3
874568..11160....0
874570..11162....12
874570..11163....12
874570..11164....12
874571...........1
874572...........0
874573...........8
874573...........8
874576..11168....1
Au final, je cherche à calculer :
- le nombre de valeurs de N1 ayant une durée =0 jour, =1 jour et celles dont la durée est >1 jour
- sachant que l'on ne tient compte que des valeurs de N1 dédoublonnées et n'ayant pas de valeur en N2.
dans l'exemple ci-dessus ça ferait donc :
nombre de valeurs en N1 = 0 ==> 1
= 1 ==> 1
> 1 ==> 3
Je voulais procéder ainsi :
- supprimer les lignes pour lesquelles une valeur est renseignées en N2.
- trier la colonne N1 et supprimer les doublons
- compter en N3 le nombre de valeurs =0 , =1 , >1
Une partie de ce que j'ai fait marche, mais le traitement du fichier par la macro est trop lent.
J'ai donc changé la méthode, je ne supprime plus les lignes mais je remplace les valeurs de la colonne N2 par "X", et je voudrai aussi remplacer par "X" celles de la colonne N1 qui sont en doublon.
voici ce que cela donnerait (avec l'exemple précédent):
N1......N2......N3
874565..X.......4
X.......X.......4
874566..........2
874567..X.......3
874568..X.......0
874570..X.......12
X.......X.......12
X.......X.......12
874571..........1
874572..........0
874573..........8
X...............8
874576..X.......1
Il suffirait ensuite de compter les valeurs de N3 pour lesquelles N1<>"X" ET N2<>"X"
Mais je bloque sur la partie où je voudrais remplacer les doublons de N1 par "X".
Quelqu'un peut-il m'aider ? ou me suggérer une méthode plus efficace?
Merci !!!
pour le remplacement des valeurs de la colonne N2 par "X" j'utilise ce code :
Dim Cellule As Range
Dim Plage As Range
Set Plage = Range("B:B")
For Each Cellule In Plage
If Cellule Like "111*" Then Cellule = "X"
Next Cellule