Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

partie commune de listes

14 réponses
Avatar
alex
Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex

10 réponses

1 2
Avatar
Stephanie Bourgon
Bonjour,

Essaie la fonction CONCATENATE (concaténer). Tu auras
probablement aussi besoin de la fonction TEXT pour définir
le format de tes valeurs.
ex:A1=1,B1=2,C1=CONCATENATE(TEXT(A1;"0.000");B1)=1.0002

Stéphanie


-----Message d'origine-----
Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en
colonne C lister

les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


.



Avatar
isabelle
bonjour Alex,

avec la formule suivante (à recopier vers le bas) tu obtiendra le nombre
de fois que chaque item de la colonne B apparait dans la colonne A,

=sommeprod(($B$1:$B$100±)*($A$1:$A$100±))

isabelle


Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


Avatar
garnote
Salut Alex,

Un exemple :
Sélectionne C1:C4, entre cette formule
¡:A4& "-" &B1:B4
et valide par Ctrl+Majuscule+Entrée

Est-ce l'effet désiré ?

Serge


"alex" a écrit dans le message de news:

Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex




Avatar
Michel Gaboly
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
alex
Merci pour ton code (la version non ListBox)
Il marche impec :-)
C'est effectivement ce que je souhaite réaliser
Mais malheureusement j'ai des doublons voir plus en A
Si je peux encore abuser de tes conseils .....
Merci encore

Alex


"Michel Gaboly" a écrit dans le message de
news:
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
De rien, ;-))

Pour éviter de reporter les doublons, il suffit de refaire en C
la même recherche qu'en B, et de ne reporter la valeur que si
elle n'est PAS trouvée en C.

Pendant qu'on y est, on peut commencer par effacer les données
reportées en C la fois d'avant :

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
With Range("C1")
' Effacement des données inscrites lors du traitement précédent.
Range(.Offset(0), .End(xlDown)).ClearContents
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then ' Présent en colonne B
Set r = Range("C:C").Find(c, , xlValues, xlWhole)
If r Is Nothing Then ' Absent en col. C
.Offset(i) = c
i = i + 1
End If
End If
End If
Next c
End With
End Sub

Voilà ;-))



Merci pour ton code (la version non ListBox)
Il marche impec :-)
C'est effectivement ce que je souhaite réaliser
Mais malheureusement j'ai des doublons voir plus en A
Si je peux encore abuser de tes conseils .....
Merci encore

Alex

"Michel Gaboly" a écrit dans le message de
news:
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
alex
Alors la...
je reste sans voix et épaté !
Ca marche plus que bien :-))))
C'est vraiment un super service que tu m'as rendu
Merci encore pour ton super boulot et ta disponibilité
C'est rare !

Alex


"Michel Gaboly" a écrit dans le message de
news:
De rien, ;-))

Pour éviter de reporter les doublons, il suffit de refaire en C
la même recherche qu'en B, et de ne reporter la valeur que si
elle n'est PAS trouvée en C.

Pendant qu'on y est, on peut commencer par effacer les données
reportées en C la fois d'avant :

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
With Range("C1")
' Effacement des données inscrites lors du traitement
précédent.

Range(.Offset(0), .End(xlDown)).ClearContents
For Each c In Intersect(Range("A:A"),
ActiveSheet.UsedRange)

If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues,
xlWhole)

If Not r Is Nothing Then ' Présent en
colonne B

Set r = Range("C:C").Find(c, ,
xlValues, xlWhole)

If r Is Nothing Then ' Absent en
col. C

.Offset(i) = c
i = i + 1
End If
End If
End If
Next c
End With
End Sub

Voilà ;-))



Merci pour ton code (la version non ListBox)
Il marche impec :-)
C'est effectivement ce que je souhaite réaliser
Mais malheureusement j'ai des doublons voir plus en A
Si je peux encore abuser de tes conseils .....
Merci encore

Alex

"Michel Gaboly" a écrit dans le message de
news:
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
Michel Gaboly
Re,

De rien. Ici, ce n'est pas si rare ;-))

Si tu viens régulièrement sur ce forum tu auras l'occasion de t'en
apercevoir.



Alors la...
je reste sans voix et épaté !
Ca marche plus que bien :-))))
C'est vraiment un super service que tu m'as rendu
Merci encore pour ton super boulot et ta disponibilité
C'est rare !

Alex

"Michel Gaboly" a écrit dans le message de
news:
De rien, ;-))

Pour éviter de reporter les doublons, il suffit de refaire en C
la même recherche qu'en B, et de ne reporter la valeur que si
elle n'est PAS trouvée en C.

Pendant qu'on y est, on peut commencer par effacer les données
reportées en C la fois d'avant :

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
With Range("C1")
' Effacement des données inscrites lors du traitement
précédent.

Range(.Offset(0), .End(xlDown)).ClearContents
For Each c In Intersect(Range("A:A"),
ActiveSheet.UsedRange)

If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues,
xlWhole)

If Not r Is Nothing Then ' Présent en
colonne B

Set r = Range("C:C").Find(c, ,
xlValues, xlWhole)

If r Is Nothing Then ' Absent en
col. C

.Offset(i) = c
i = i + 1
End If
End If
End If
Next c
End With
End Sub

Voilà ;-))



Merci pour ton code (la version non ListBox)
Il marche impec :-)
C'est effectivement ce que je souhaite réaliser
Mais malheureusement j'ai des doublons voir plus en A
Si je peux encore abuser de tes conseils .....
Merci encore

Alex

"Michel Gaboly" a écrit dans le message de
news:
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Daniel.M
Salut,

Une alternative sans boucle (elle ne tient pas compte des valeurs d'erreurs en
colonne A):

Sub ListeValeursCommunes()
Dim ColA As Range, ColB As Range

Set ColA = Intersect(Range("A:A"), ActiveSheet.UsedRange)
Set ColB = Intersect(Range("B:B"), ActiveSheet.UsedRange)

With ColA.Offset(0, 2) ' à adapter pour une autre colonne que C
.Formula = "=IF((ISNUMBER(MATCH(A1," & ColB.Address & _
",0))*COUNTIF(A$1:A1,A1)=1),A1,"""")"
.Value = .Value
.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo
End With
End Sub

Salutations,

Daniel M.

"alex" wrote in message
news:
Merci pour ton code (la version non ListBox)
Il marche impec :-)
C'est effectivement ce que je souhaite réaliser
Mais malheureusement j'ai des doublons voir plus en A
Si je peux encore abuser de tes conseils .....
Merci encore

Alex


"Michel Gaboly" a écrit dans le message de
news:
Bonsoir alex,

Si tu n'as pas de doublon en colonne A, ce code devrait faire,
l'affaire, sinon il faudra l'affiner.

Le principe est de rechercher pour toute cellule non vide de
la colonne A si on en retrouve la valeur dans une cellule de
la colonne B. Si oui, on alimente alors la liste, à partir de
la cellule C1 (à adapter)/

Private Sub ListeValCommunes()
Dim c As Range, r As Range, i As Integer
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
With Range("C1")
If Not r Is Nothing Then
.Offset(i) = c
i = i + 1
End If
End With
End If
Next c
End Sub

J'avais mal lu la question : du mot "liste", j'avais hativement
tiré le conclusion que tu voulis alimenter un ListBox dans un
UserForm avec les valeurs présentes en A et en B.

Voici le code correspondant :

Private Sub UserForm_Initialize()
Dim c As Range, r As Range
For Each c In Intersect(Range("A:A"), ActiveSheet.UsedRange)
If c <> "" Then
Set r = Range("B:B").Find(c, , xlValues, xlWhole)
If Not r Is Nothing Then
ListBox1.AddItem c
End If
End If
Next c
End Sub



Bonjour à tous,

Voila mon pb :
J'ai des valeurs en colonnes A et B. Je voudrais en colonne C lister
les valeurs qui se trouvent dans A ET dans B...
Comment faire ??
Merci à tous pour vos réponses

Alex


--
Cordialement,

Michel Gaboly
http://www.gaboly.com









Avatar
AV
Autre......A voir ce que tu veux
Si tu veux extraire les valeurs uniques des doublons --> voir soluce Daniel
Pour extraire tous les doublons :

Sub Extract_Dble()
Application.ScreenUpdating = False
L = Application.Max([A65536].End(xlUp).Row, [B65536].End(xlUp).Row)
Range("C1:C" & L) = _
"=if(isnumber(match(a1," & "$b$1:$b$" & L & ",0)),index(" & "$B$1:$B$" _
& L & ",match(A1," & "$B$1:$B$" & L & ",0)),"""")"
Range("C1:C" & L) = (Range("C1:C" & L))
[C:C].Sort Key1:=[C1], Order1:=xlAscending
End Sub

NB : les méthodes par formule sont considérablement plus rapides que les boucles
(faire un test sur simplement 2000 lignes)

AV
1 2