Copier ligne selon SOMMEPROD

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21360401
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" 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
Guy85
Le #21360531
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"
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" 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

michdenis
Le #21360581
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"
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"
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" 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

Guy85
Le #21361121
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"
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" 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"
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" 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




michdenis
Le #21361311
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
Guy85
Le #21361621
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"
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

michdenis
Le #21362081
| 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 !
michdenis
Le #21362071
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" #
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"
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

Guy85
Le #21362171
Ok ça fonctionne.
Merci de ton aide.
Guy

"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" 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"
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




Guy85
Le #21362281
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"
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" 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"
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




Publicité
Poster une réponse
Anonyme