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

Copier ligne selon SOMMEPROD

17 réponses
Avatar
Guy85
Bonjour,
Je m'explique:
Actuellement j'ai la formule suivante:
=SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
cela me copie donc la somme ou il y a le texte "Cpam".
Par contre, je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne
entière).
Est-ce possible ?
Merci de votre aide
Cordialement
Guy

10 réponses

1 2
Avatar
michdenis
Bonjour,

Je ne comprends pas la formulation de la question.

| =SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
*** ceci ne copie rien mais permet de calculer la somme
de la plage "Janvier!$G$3:$G$70" si le critère "Janvier!$B$3:$B$70="Cpam"
est respecté.

| je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne entière
*** je n'ai aucune idée de ce que tu attends comme réponse !




"Guy85" a écrit dans le message de groupe de discussion :
O#
Bonjour,
Je m'explique:
Actuellement j'ai la formule suivante:
=SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
cela me copie donc la somme ou il y a le texte "Cpam".
Par contre, je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne
entière).
Est-ce possible ?
Merci de votre aide
Cordialement
Guy
Avatar
Guy85
Bonjour,
Effectivement, SOMMEPROD n'a plus rien à voir.
Mon tableau : B3:G70
Par exemple (Feuil1) j'ai 3 lignes sur 70 ou il y a, en colonne "B" le mot
"Cpam".
En Feuil2, (à la place de la somme), je souhaiterais avoir une copie de ces
3 lignes (B à G) si elle contiennent le mot "Cpam" en "B" de la Feuil1.
Cordialement
Guy

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

Bonjour,

Je ne comprends pas la formulation de la question.

| =SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
*** ceci ne copie rien mais permet de calculer la somme
de la plage "Janvier!$G$3:$G$70" si le critère "Janvier!$B$3:$B$70="Cpam"
est respecté.

| je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne entière
*** je n'ai aucune idée de ce que tu attends comme réponse !




"Guy85" a écrit dans le message de groupe de
discussion :
O#
Bonjour,
Je m'explique:
Actuellement j'ai la formule suivante:
=SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
cela me copie donc la somme ou il y a le texte "Cpam".
Par contre, je souhaiterais (au lieu de n'avoir que le somme) avoir la
ligne
entière).
Est-ce possible ?
Merci de votre aide
Cordialement
Guy

Avatar
michdenis
Essaie ceci et adapte le nom des feuilles (2 endroits)
dans la procédure.

'-----------------------------------------
Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Worksheets("Feuil1") 'Feuille source
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = X + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("A" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'-----------------------------------------



"Guy85" a écrit dans le message de groupe de discussion :

Bonjour,
Effectivement, SOMMEPROD n'a plus rien à voir.
Mon tableau : B3:G70
Par exemple (Feuil1) j'ai 3 lignes sur 70 ou il y a, en colonne "B" le mot
"Cpam".
En Feuil2, (à la place de la somme), je souhaiterais avoir une copie de ces
3 lignes (B à G) si elle contiennent le mot "Cpam" en "B" de la Feuil1.
Cordialement
Guy

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

Bonjour,

Je ne comprends pas la formulation de la question.

| =SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
*** ceci ne copie rien mais permet de calculer la somme
de la plage "Janvier!$G$3:$G$70" si le critère "Janvier!$B$3:$B$70="Cpam"
est respecté.

| je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne entière
*** je n'ai aucune idée de ce que tu attends comme réponse !




"Guy85" a écrit dans le message de groupe de
discussion :
O#
Bonjour,
Je m'explique:
Actuellement j'ai la formule suivante:
=SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
cela me copie donc la somme ou il y a le texte "Cpam".
Par contre, je souhaiterais (au lieu de n'avoir que le somme) avoir la
ligne
entière).
Est-ce possible ?
Merci de votre aide
Cordialement
Guy

Avatar
Guy85
Oui ça correspond à ce que je demandais, mais je ne pensais pas que cette
macro serais aussi importante pour un seul nom.
Si je change le mois, ça ne se met pas à la suite.
Car il faut que je récupère de chaque mois (Feuil1) avec des noms différents
(Cpam, Mutuelle (pour les remboursements) et (Médecin, Spécialiste,
Pharmacie etc......pour les dépenses).
En fait, je souhaitais avoir une feuille récapitulative pour tout les achats
et dépenses de santé.

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

Essaie ceci et adapte le nom des feuilles (2 endroits)
dans la procédure.

'-----------------------------------------
Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Worksheets("Feuil1") 'Feuille source
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = X + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("A" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'-----------------------------------------



"Guy85" a écrit dans le message de groupe de
discussion :

Bonjour,
Effectivement, SOMMEPROD n'a plus rien à voir.
Mon tableau : B3:G70
Par exemple (Feuil1) j'ai 3 lignes sur 70 ou il y a, en colonne "B" le mot
"Cpam".
En Feuil2, (à la place de la somme), je souhaiterais avoir une copie de
ces
3 lignes (B à G) si elle contiennent le mot "Cpam" en "B" de la Feuil1.
Cordialement
Guy

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

Bonjour,

Je ne comprends pas la formulation de la question.

| =SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
*** ceci ne copie rien mais permet de calculer la somme
de la plage "Janvier!$G$3:$G$70" si le critère "Janvier!$B$3:$B$70="Cpam"
est respecté.

| je souhaiterais (au lieu de n'avoir que le somme) avoir la ligne
entière
*** je n'ai aucune idée de ce que tu attends comme réponse !




"Guy85" a écrit dans le message de groupe de
discussion :
O#
Bonjour,
Je m'explique:
Actuellement j'ai la formule suivante:
=SOMMEPROD((Janvier!$B$3:$B$70="Cpam")*Janvier!$G$3:$G$70).
cela me copie donc la somme ou il y a le texte "Cpam".
Par contre, je souhaiterais (au lieu de n'avoir que le somme) avoir la
ligne
entière).
Est-ce possible ?
Merci de votre aide
Cordialement
Guy




Avatar
michdenis
Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("B" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
Avatar
Guy85
Ok, là ça va à la suite.
Par contre, je ne te l'ai pas dit ,car je ne savais pas que cela poserait
problème.
Dans la colonne "B" (ou il y a le nom) ce sont des cellule avec une liste de
validation, et à chaque fois j'ai un message qui me dit si je dois garder le
même nom etc.....
Je répons oui à chaque fois, c'est pas grave, mais y a t-il un moyen
d'éviter ça.
Peut être quand recopiant que les valeurs ?

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

Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("B" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub

Avatar
michdenis
| Dans la colonne "B" (ou il y a le nom)
**** De la colonne de la feuille source ?
De la colonne de la feuille destination ?
**** De quel nom du parles ?
- la valeur de la liste de validation ?
- nom d'une plage nommée ?

Ta liste de validation est renseignée de quelle manière ?
Par une plage nommée ?

Ta question est totalement incompréhensible !
Avatar
michdenis
Est-ce que ceci résout ton problème ?

'-------------------------------------
Sub test()
Dim Trouve As Range, T As Variant
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
T = Trouve.Resize(, .Columns.Count)
Worksheets("Feuil2").Range("B" & X).Resize(, UBound(T, 2)) = T
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'-------------------------------------




"Guy85" a écrit dans le message de groupe de discussion :
#
Ok, là ça va à la suite.
Par contre, je ne te l'ai pas dit ,car je ne savais pas que cela poserait
problème.
Dans la colonne "B" (ou il y a le nom) ce sont des cellule avec une liste de
validation, et à chaque fois j'ai un message qui me dit si je dois garder le
même nom etc.....
Je répons oui à chaque fois, c'est pas grave, mais y a t-il un moyen
d'éviter ça.
Peut être quand recopiant que les valeurs ?

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

Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("B" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub

Avatar
Guy85
Ok ça fonctionne.
Merci de ton aide.
Guy

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

Est-ce que ceci résout ton problème ?

'-------------------------------------
Sub test()
Dim Trouve As Range, T As Variant
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
T = Trouve.Resize(, .Columns.Count)
Worksheets("Feuil2").Range("B" & X).Resize(, UBound(T,
2)) = T
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'-------------------------------------




"Guy85" a écrit dans le message de groupe de
discussion :
#
Ok, là ça va à la suite.
Par contre, je ne te l'ai pas dit ,car je ne savais pas que cela poserait
problème.
Dans la colonne "B" (ou il y a le nom) ce sont des cellule avec une liste
de
validation, et à chaque fois j'ai un message qui me dit si je dois garder
le
même nom etc.....
Je répons oui à chaque fois, c'est pas grave, mais y a t-il un moyen
d'éviter ça.
Peut être quand recopiant que les valeurs ?

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

Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("B" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub




Avatar
Guy85
Donc comme tout fonctionne parfaitement.
J'ai juste changé :With Feuil1 'Feuille source (c'est à dire le mois) en
With Worksheets ("Janvier").
Je voulais savoir, si il y a une possibilité d'avoir une boite de dialogue
pour choisir le mot de la Feuil1 (Cpam, ou Médecin etc....
Puis avoir la même chose pour choisir la feuille qui correspond au mois
Cordialement

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

Est-ce que ceci résout ton problème ?

'-------------------------------------
Sub test()
Dim Trouve As Range, T As Variant
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
T = Trouve.Resize(, .Columns.Count)
Worksheets("Feuil2").Range("B" & X).Resize(, UBound(T,
2)) = T
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'-------------------------------------




"Guy85" a écrit dans le message de groupe de
discussion :
#
Ok, là ça va à la suite.
Par contre, je ne te l'ai pas dit ,car je ne savais pas que cela poserait
problème.
Dans la colonne "B" (ou il y a le nom) ce sont des cellule avec une liste
de
validation, et à chaque fois j'ai un message qui me dit si je dois garder
le
même nom etc.....
Je répons oui à chaque fois, c'est pas grave, mais y a t-il un moyen
d'éviter ça.
Peut être quand recopiant que les valeurs ?

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

Sub test()
Dim Trouve As Range
Dim Mot As String, Adr As String
Mot = "Cpam"
With Feuil1
With .Range("B3:G70")
Set Trouve = .Find(what:=Mot, LookIn:=xlValues, _
lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
X = Worksheets("Feuil2").Range("b65536").End(xlUp).Row + 1
Trouve.Resize(, .Columns.Count).Copy _
Worksheets("Feuil2").Range("B" & X)
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub




1 2