a oui!!! et bien pense a ce qui te reste a faire apres !!!!!!dans le principe sans forcément l'écriture, en schématisant Union, mais à la place on pointe sur le numéro de ligne on a un résultat direct
a oui!!! et bien pense a ce qui te reste a faire apres !!!!!!dans le principe sans forcément l'écriture, en schématisant Union, mais à la place on pointe sur le numéro de ligne on a un résultat direct
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
oui en effet au début c'était 2 colonnes mais la difficulté a été augmenté à n colonnes avec différentes méthodes dont plusieurs marche sur Mac (car je suis sur Mac) et on n'est pas gâté coté VBA, donc utile aussi pour les utilisateurs Mac dont j'essaie de faire un max de code marchant sur les 2 plateformes (et c'est aussi formateur )
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
puré ah ! ... j'espere que cela est formateur sinon je mage mon clavier
la recherche de la derniere ligne meme en une seule ligne est inutile sachant que les colonne n'ont pas le meme nombre de lignes c'est vraiment etre tordu d'aller chercher cela meme si c'est possible en créant une ligne avec application.rep (deja vu sur un de mes posts pour un autre sujet)
si je te dis que meme sans string sans tableau avec ta ligne speciallcells et un dico on a tout non de dieu!!!!
un petit detail interessant tout de meme dans cette version
la boucle for each boucle par ligne et non par colonne comme elle le ferait avec une plage contigue ( a garder en memoire )
pour l'object scripting je sais pas pour mac
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub test() Dim dico, ddd2 Set dico = CreateObject("scripting.dictionary") Set ddd2 = Union(Range("A:A"), Range("C:C"), Range("E:E")).SpecialCells(xlCellTypeConstants, 23) For Each cel In ddd2.Cells If Not dico.exists(cel.Value) Then dico(cel.Value) = cel.Column Else If cel.Column <> dico(cel.Value) Then dico(cel.Value) = "X" End If Debug.Print cel.Address Next For Each elem In dico If dico(elem) = "X" Then dico.Remove (elem) Next Cells(1, "G").Resize(dico.Count, 1) = Application.Transpose(dico.keys) End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Pour l'objet sous Mac c'est mort mais ayant déjà créé une classe Dictionnaire pour Mac / PC
compatible avec Dictionary et en l'améliorant de quelques fonctions …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
re
Marc et le new collection il fonctionne avec mac non?
si oui faire pareil avec une collection
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour,
Je n'ai pas lu les 9 pages,mais je sais qu'une solution existe dans les tutos de JB , dans le thème "Dictionary" et l'exemple est :"Eléments communs à 2 listes" http://boisgontierjacques.free.fr/
J'ai déjà testé et adapté et tout fonctionne parfaitement.......
A+
je suis curieux de voir ca
je suis bloqué par le key/item dans ma compréhention
les collection n'ont pas ca non?
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Hi,
bon, j'ai utilisé le dictionnaire MAC - Encore grand merci Marc .
j'avoue avoir utilisé le dictionnaire par 2 fois , 1 fois sur mon post (cf. lien ci-dessus donné par Marc) et une fois sur ce post avec le vrai dictionnaire Windows.
Et là je tourne en rond car j'ai bien le résultat mais les removes ne sont pas pris en compte - donc des intrus dans le résultat - ici :
le code complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each elem In oDic If oDic(elem) = "X" Then oDic.Remove (elem) Next
Marc, As tu une idée où j'ai déconné ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub dico() Dim oDic As New Dictionnaire, dd2 Set ddd2 = Union(Range("A:A"), Range("C:C"), Range("E:E")).SpecialCells(xlCellTypeConstants, 23) For Each cel In ddd2.Cells If Not oDic.Exists(cel.Value) Then oDic(cel.Value) = cel.Column Else If cel.Column <> oDic(cel.Value) Then oDic(cel.Value) = "X" End If Debug.Print cel.Address Next For Each elem In oDic If oDic(elem) = "X" Then oDic.Remove (elem) Next Columns("G").Clear Cells(1, "G").Resize(oDic.Count, 1) = Application.Transpose(oDic.KeysH) End Sub
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Bonjour,
à première vue rien ne me choque si ce n'est Transpose(oDic.KeysH) alors que
j'ai pourtant créé la fonction KeysV justement pour éviter une transposition !
Dis-moi à quel post je dois remonter pour charger un classeur de données
et dans lequel j'aurais l'explication de ce que tu réalises car cela fait un bail que j'ai décroché …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Bonjour Marc,
j'ai remplacé la ligne n° 16 (avec ce code même réultat sur Mac que sur PC) :
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(1, "G").Resize(oDic.Count, 1) = Application.Transpose(oDic.KeysH)
ici j'ai lemême réultat que la précédente ligne n°16 avant changement
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(1, "G").Resize(oDic.Count, 1) = oDic.KeysV
Si dessous le tableau avec les données en colonne A, C et E - le résultat en colonne G (en rouge les intrus)
1 10 3 5 2 20 7 8 3 30 2 9 4 40 1 11 5 50 10 12 6 60 2 20 7 70 6 30 8 80 4 40 9 90 3 50 10 100 7 60 11 110 182 70 12 120 80 130 90 140 100 150 110 120 130 140 150 1 10 2 6 4 3 7 182
Le code de Patrick m'avais fourni ce résultat :
5 8 9 11 12 20 30 40 50 60 70 80 90 100 110 120 130 140 150 182
je vais refaire des tests sur les 2 plateformes
Merci
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Hi Marc, Patrick, le forum
J'ai refait des tests avec le code de Patrick et le code avec le code utilisant le dictionnaire Mac.
Chose étrange qui m'est arrivé avec le code de Patrick, en testant avec le mode espion le code dico(elem) en mode arrêt ,
j'ai eu un résultat plus que bizarre, car le résultat était tout autre. Bug ???
J'ai appuyé sur la touche F5 à plusieurs reprises (mode espion avec arrêt à chaque changement de valeur),
la valeur de dico(elem) = "X" quand la condition se présente à la fin du processus et c'est la ou c'est étrange, le résultat affiché est celui-ci :
Alors que sans le mode espion le résultat du code de Patrick est bien celui du post précédent
5 8 9 11 12 20 30 40 50 60 70 80 90 100 110 120 130 140 150 1 10 2 6 4 3 7 182
(noté le décalage d'une ligne - le résultat commence à partir de la ligne 2 - bizarre)
Maintenant une capture d'écran sur Mac (avec le code du dictionnaire Mac) en mode espion et avec les variables locales :
T'en dis quoi Marc, c'est infos donnent des indices ?
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
je n'ai pas mis l'exception de la cellule vide donc forcement tu un item du dico vide
le dernier code que j'ai poster pour W fonctionne tres bien sauf pour le vide
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
re Patrick,
ça ne m'explique pas comment j'arrive à avoir 2 résultats différents avec ton code (pas de modification),
rien qu'en actionnant le mode espion avec mode "arrêt si la valeur change" sur dico(elem) en faisant F5.
je l'ai testé sur mon Mac en boot Windows et sur un autre PC avec le même résultat.
Teste le sans mode espion et avec et dis moi ce qu'il en ai car moi là je nage.
De plus là ou dans ton code on obtient en mode espion dico(elem) = "X",
pour moi le résultat est toujours empty j'ai juste elem qui se décompose en elem(0) et elem(1) et quand il doit y avoir un "X" il se trouve sur elem(1)
par conséquent la vérification ne peut pas se faire.
Il y a quelque chose qui m'échappe
Je tiens vraiment à résoudre le problème, car Marc m'a donné un fabuleux outil que je n'ai pas assez exploité et à tord (désolé Marc je vais y remédier ) et j'aimerai l'utilisé maintenant que je me sens un peu plus à l'aise avec VBA
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
j'aimerais bien l'avoir moi cet classe mac
pour ton soucis je vienss de tester pas a pas pour moi tout est ok
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
non c'est pas en pas à pas mais avec F5
sinon pour le dictionnaire Mac de Marc c'est là
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager