[RÉSOLU]:Modifier le code; 2 autres conditions,mettre les résultats sur autre feuille

  • Initiateur de la discussion Initiateur de la discussion Gen Rose
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gen Rose

XLDnaute Impliqué
Supporter XLD
Bonjour Forum 😱

J'ai trouvé une macro presque parfaite que j'aimerais adapter pour mon document.

J'ai écrit quelques pistes mais il me manque des morceaux...d'autant plus que la formule trouvée ne déclare pas ses variables donc je suis un peu perdue.

La macro originale prend une colonne(D), trie et compte les doublons et insère les résultats sur deux autres colonnes (G et H).

Celle que j'ai besoin doit trier 3 colonnes (A, B et D)
Copier les résultats sans doublons sur la feuille Resultat
et inscrire dans la colonne E combien.

Merci beaucoup pour votre aide
 

Pièces jointes

Dernière modification par un modérateur:
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Oh, super! Vraiment!
Mais dis-moi sincèrement, est-ce que mes écrits dans la fenêtre du module avait un peu de sens?
Parceque je fais des lectures de bases et je pense que ça commence à entrer dans ma caboche 🙄
 
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Bonjour Geneviève🙂 le forum
voilà ton fichier en retour
mais avec tes noms qui ne sont pas écrits pareil et avec des espaces en fin de lignes et entre les mots !!!! ???? brbrbrbrbr
bref voilà tu cliques sur compter mais la macro est un peu longue mini 30 secondes enfin a peu près
a+
Papou🙂
 

Pièces jointes

Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Re Geneviève🙂 le forum
par contre j'ai compté aussi là ou il n'y a pas de nom dans la colonne D ?? je pense que c'était inutile, mais redis le et je modifierai
a+
papou🙂

EDIT Bisous Laetitia🙂
 
Dernière édition:
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

bonjour genevieve ,Papou🙂🙂

une autre facon de l'ecrire

Code:
Sub es()
 Dim t(), t1(), i As Long, x As Long, c As Byte, z, m As Object, n As Object
 Set m = CreateObject("Scripting.Dictionary")
 Set n = CreateObject("Scripting.Dictionary")
 t = Feuil1.Range("a2:d" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row).Value
 ReDim t1(1 To UBound(t), 1 To 4)
 For i = 1 To UBound(t)
 z = t(i, 1) & t(i, 2) & Trim(t(i, 4))
 n(z) = n(z) + 1
 If Not m.Exists(z) Then
 m(z) = "": x = x + 1
 For c = 1 To 4: t1(x, c) = t(i, c): Next c
 End If
 Next i
 Feuil3.[a2].Resize(x, 4) = t1
 Feuil3.[e2].Resize(n.Count) = Application.Transpose(n.Items)
End Sub
 
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Bonjour Geneviève, Papou, Laetitia,

Cette macro utilise aussi 2 objets "Dictionary" :

Code:
Sub ListeSansDoublon()
Dim T, dico1 As Object, dico2 As Object, i&, x1$, x2$
Set T = Intersect(Feuil1.[A2:D65536], Feuil1.UsedRange)
If T Is Nothing Then Exit Sub
T = T 'matrice, plus rapide
Set dico1 = CreateObject("Scripting.Dictionary")
Set dico2 = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(T)
  x1 = Application.Trim(T(i, 1) & Chr(1) & T(i, 2) & Chr(1) & T(i, 4))
  x2 = Application.Trim(T(i, 1) & Chr(1) & T(i, 2) & Chr(1) & T(i, 3) & Chr(1) & T(i, 4))
  dico1(x1) = x2
  dico2(x1) = dico2(x1) + 1
Next
With Feuil3 'CodeName
  .[A2:E65536].ClearContents 'RAZ
  .[E2].Resize(dico2.Count) = Application.Transpose(dico2.items)
  .[A2].Resize(dico1.Count) = Application.Transpose(dico1.items)
  .[A2].Resize(dico1.Count).TextToColumns .[A2], xlDelimited, Other:=True, OtherChar:=Chr(1)
  .Activate 'facultatif
End With
End Sub
Noter que s'il y a des noms dans la colonne CONTACT NAME, pour chaque groupe de doublons c'est le dernier qui est retenu.

Fichier joint.

A+
 

Pièces jointes

Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Re,

Il n'y a pas d'espaces superflus sur les 2 premières colonnes donc Application.Trim (SUPPRESPACE) sur la 4ème colonne uniquement :

Code:
x1 = T(i, 1) & Chr(1) & T(i, 2) & Chr(1) & Application.Trim(T(i, 4))
x2 = T(i, 1) & Chr(1) & T(i, 2) & Chr(1) & T(i, 3) & Chr(1) & Application.Trim(T(i, 4))
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Bonjour Geneviève 🙂Laetitia🙂 Job le forum
je viens de tester et le plus rapide entre mes trois essais chez moi c'est
Code:
z = t(i, 1) & t(i, 2) & Trim(t(i, 4))
a+
Papou🙂
 
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Re Laetitia🙂 le forum,
je ne savais pas que application.trim ou application.worksheet.trim retiraient aussi les espaces au milieu
merci de la précision
a+
Papou🙂
 
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Bonjour à tous,

@ Laetitia, tu as raison, j'ai testé le fichier du post #8 sur Win7 - Excel 2010 :

- avec Application.Trim(T(i, 4)) => 0,42 s

- avec Application.WorksheetFunction.Trim(T(i, 4)) => 0,34 s

@ Papou j'avais pris soin de rappeler au post #8 que Application.Trim c'est SUPPRESPACE 🙂

A+
 
Re : Modifier le code pour 2 autres conditions et mettre les résultats sur autre feui

Whoa! Tout plein de réponses à découvrir!!! Vous êtes absoluement supers!!!!! 😀

Je vais prendre le temps de lire et tester tout ça (j'ai quitté de bonne heure hier à job donc c'est ce matin que je déboule sur le fil)

Merci bcp Papou, Laetitia et Job 😱
Bonne journée à tous les XLNautes!
 
[RÉSOLU] : Modifier le code ...

J'ai tout tout tout testé!

J'aimerais savoir de qu'elle manière vous arrivez à calculer le nombre de seconde que prend une macro (une sorte de compteur il me semble). J'aimerais intégrer ce compteur dorénavent car je trouve que c'est intéressant de mesurer.

Les solution de Laetitia et Job sont vraiment rapide et pour la macro de papou, quoique plus lente, j'arrive presqu'à la comprendre en la lisant. Bref, toutes les solutions fonctionnent!😱

(Papou) ...par contre j'ai compté aussi là ou il n'y a pas de nom dans la colonne D ?? je pense que c'était inutile, mais redis le et je modifierai
C'était une erreur! Je ne m'était pas rendu complètement en bas mais ces dates ne sont pas censées êtres là!
J'aime bien la macro de Job qui les ajoutent tout de même car si ça n'avait pas été une erreur, c'est bien qu'elles soient comptabilisées aussi.

(Job)...Noter que s'il y a des noms dans la colonne CONTACT NAME, pour chaque groupe de doublons c'est le dernier
Pas de problème:la colonne D n'est pas importante pour pour cette partie du travail 🙂

Je suis aussi vraiment contente qu'il existe une application qui supprime aussi les espace en triant. À mon avis, je risque de réutiliser!

Merci beaucoup d'avoir résolu ce problème et de m'avoir apporté votre aide, j'apprécie énormément 😱

Bonne journée groupe!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Retour