Realiser un regroupement de données en excel

Fermé
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020 - 29 mai 2014 à 16:37
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 21 juin 2014 à 16:44
Bonjour. je veux réaliser un regroupement en excel.
j'ai plusieurs feuilles excel et chaque feuille contient plusieurs lignes de saisies. les en-tête de colonne des feuilles sont les suivantes: date, nom & prenom, depot effectué, retrait.
Sur une feuille par exemple il peut y avoir une même personne qui apparaît plusieurs fois parce qu'elle à effectuer plusieurs depot ou retrait à des dates differentes . mon problème est le suivant:

- je veux regrouper les données pour que sur une feuille, chaque personne apparaisse une seule fois,
-si on choisit une personne on puisse voir la somme de tous ses depot et ses retraits sans considerer la date
merci de m'aider. coordialement

voici un exemple:

Nom& prenom depot retrait

jean 1000 300
kokou 2000 300
noel 2000 200
jean 5000 200
jean 3000 500
kokou 5000 500
noel 5000 500
jean 2000 1000
noel 1000 500
kokou 3000 300

Resultat à obtenir

Nom &prenom depot retrait
kokou 10 000 1000
jean 12 000 2000
noel 10000 1000
A voir également:

15 réponses

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
29 mai 2014 à 17:10
Bonjour,

=SOMME.SI(A:A;"jean";B:B)

te donneras la somme de la colonne B quand dans la colonne A il y a Jean

Et pour faire la somme de plusieurs feuilles :
=SOMME.SI(Feuil1!A:A;"jean";Feuil1!B:B) + SOMME.SI(Feuil2!A:A;"jean";Feuil2!B:B) etc

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
29 mai 2014 à 18:30
merci
en fait le plus grd probleme est que les noms sont beaucoup sur chaque feuille de calcul excel (parfois plus de 1000 noms different sur une seule feuille san compter les repetition)
n' y a t-il pas un moyen en excel pour récuperer tous les noms des personnes et associer à chaque nom la somme de ses depot et retrait ?
merci
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
29 mai 2014 à 18:38
Là faudra sans doute une macro en VBA !
Il y a t 'il une feuille où tous les noms différents sont présents ?
Combien y a t il de feuilles ?
Peut on regrouper toutes les feuilles sur une seule ?
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
29 mai 2014 à 19:01
non il y a pas de feuille ou ts les nom differents sont present

il y en a 18 feulle et les feuilles st realiser par differente personnes donc on doit les traiter differement

je veux traiter les feuilles separemment dabord et après je vais les regrouper.
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
29 mai 2014 à 19:29
Un exemple de macro sur 2 feuilles de données et une feuille RECAP
A adapter à tes besoins (Alt F11 pour ouvrir l'éditeur et voir le code)
https://www.cjoint.com/?0EDtCNAhJmF

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
29 mai 2014 à 19:53
merci bcp pour votre aide.
svp jai pu accéder à votre code seulement que je ne sais pas grd chose sur les macro et la programmation en excel
svp donnez moi quelque directive pour que je puisse adapter le code à mon besoin
svp. merci
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
29 mai 2014 à 20:46
Il y a très peu de chose à changer :

1° la feuille récapitulative doit être la 1ere dans les onglets en bas, donnes lui le nom que tu veux et dans la macro changes tous les sheets("RECAP") en Sheets(1)
2° les autres feuilles avec les données et n'importe quesl noms
3° Dans plusieurs lignes de la macro les 3 colonnes sont indiquées par leurs lettres, dans mon exemple les noms sont en colonne A les depots en colonne B et les retraits en colonne C,
si ce sont d'autres colonnes dans ton fichier il suffit de changer les lettres dans la macro à chaque endroit , par exemple la ligne
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False) deviendra
resultat = Application.VLookup(nom, Sheets(1).Range("B2:B" & DLR), 1, False) si chez toi les noms seront dans la colonne B etc

C'est tout, ce que font les lignes dans la macro sont expliqués dans les commentaires en vert

Pour inserer la macro tu ouvres l'éditeur (ALT F11) , Insertion Module et tu copies ma macro que tu colles dans la fenetre blanche de droite; ensuite tu procèdes au modifs necessaires avant de refermer l'éditeur

Pour lancer la macro, pas besoin d'un bouton comme j'avais mis dans l'exemple, tu vas dans l'onglet Developpeur, Macros tu choisis la macro recap et Executer
(Si l'onglet Developpeur n'est pas présnet dans ton ruban tu vas en haut à gauche Bouton Excel Options Excel et tu coches la case Afficher l'onglet Developpeur ..

Bonne application

Si tu n'y arrives pas post ton fichier anonymé (tu remplaces les noms) et allégé (20 lignes suffisent) sur cjoint.com et indiques ici le lien fourni, je regarderai ça

Cdlmnt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
30 mai 2014 à 15:45
bjr
jai essayé de faire les correction. mais les resultats ne sont pas bons.
chez moi la feuille RECAP a la meme architecture que la votre.

mais sur les autres feuilles le "NOM & PRENOMS" est dans la colonne D, le "DEPOT" dans la colonne F et "RETRAIT" dans la colonne G


voici mon code:


Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("A" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en A
nom = Sheets(N).Range("D" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne Aet addition des montants en colonne B et C
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("B" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("C" & x)
End With

Next x

Next N

Sheets("1").Select

Application.ScreenUpdating = True

End Sub


aussi la compilation met une erreur que voici: erreur de type 13. incompatibilité de type

merci pour votre aide
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
30 mai 2014 à 15:54
Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("D" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("D" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne Aet addition des montants en colonne B et C
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("F" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)

End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End sub

Lignes en gras modifiées pour correspondre à ce que tu me dis de ton fichier

A tester

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
30 mai 2014 à 17:57
merci bcp pour votre aide
svp jaai fais les modifications necessaires en gras. mais quand je compile je constate 2 erreurs.
la 1ere est ceci : incompatibilité de type

la seconde est que sur les données de la feuille RECAP le montant devant certains nom ne verifie pas le montant quand on fait la compilation sur les autres feuilles.

est c que vous une idée de comment procéder pour y arriver

voici mon code:

Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("D" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("D" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne Aet addition des montants en colonne B et C
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("F" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)
End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End Sub
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
30 mai 2014 à 18:35
A quel moment se produit incompatibilité de type ?
Quand elle se produit cliquer sur Débogage et voir quelle est la ligne surlignée en jaune dans la macro
Le différentiel provient peut être que certains montants ne sont pas pris en compte du fait de l'erreur
Il faut d'abord régler le problème de l'erreur, on verra le reste après

Si possible post un extrait de ton fichier (une dizaine de lignes par feuille) en anonymant les noms sur cjoint.com et indiques ici ensuite le lien fourni, je pourrais essayer de voir ce qui c loche
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
30 mai 2014 à 19:07
daccord voici la ligne en jaune:

.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
30 mai 2014 à 19:32
A priori je pense qu'Excel ne peux pas faire la somme car une des données ne doit pas être de type numérique, mais ce n'est qu'une supposition, impossible d'en dire plus sans voir le fichier

Tu anonymes une partie d'une copie de ton fichier comme je disais, avec la macro bien sur et tu le postes sur cjoint puis tu m'indique le lien ici ou en mp et je regarderai
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
30 mai 2014 à 20:02
voici un extrait de 5 feuille

https://www.cjoint.com/?3EEuaGuo5C6
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
30 mai 2014 à 23:06
ta macro fonctionne très bien sur l'extrait que tu m'as envoyé

https://www.cjoint.com/?0EExam3yMT8

Les totaux sont justes et correspondent à ceux que j'ai fait sur chaque feuille

Vérifie tes feuilles réelles, il y a peut être des blancs, des cellules non renseignées ou des cellules en texte eu lieu d'être en nombre et qui font buguer la macro

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
31 mai 2014 à 12:38
daccord. merci beaucoup pour votre aide. meme si la verifcation sera difficile à faire.
Vous m'avez porté une tres grande aide. merci beaucoup.

mais en passant est ce qu'il y a une fonction en excel pour faire cette verification feuille par feuille ( je veux dire si le contenu des cellules d'une colonne donnée sont d'un autre type alors qu'il devrait être d'un autre type)
merci
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
31 mai 2014 à 14:06
A ma connaissance non!
Mais tu peux en sélectionnant toute la colonne attribuer un format à toutes les cellules.
Enfin en faisant executer la macro quand l'erreur se produit et en faisant débogage, quand tu passes la souris sur les parties de la formule surlignée en jaune un commentaire affiche la valeur de la variable, ainsi par ex dans la formule :
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x), le survol de la souris sur N en indiquera la valeur et le survol sur x de même, tu peux donc savoir dans quelle feuille et à quelle ligne se trouve l'erreur

Bon courage pour la suite
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
13 juin 2014 à 14:11
bjr Mr. excusez de revenir vous deranger de nouveau.
svp. je dois faire quelque modification de mon code mais je ne m'en sors pas.

voici mon ancien code:

Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("D" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("D" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne Aet addition des montants en colonne B et C
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("F" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)
End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End Sub


ce ancien code me permettait de ranger les nom dans la colonne "A", et de cumuler les depot et retrait associés à chaque nom respectivement ds les colonnes "B" et "C"

mon probleme est que je ne veux plus cumuler les depot.

par exemple pour le nom "prosper" de la cellule D2 à la cellule D7 le depot correspondant est 700. (cest à dire quand cest le meme montant on ne cumule pas, mais quand les montant sont differents on fait la somme en prenant juste les montants une seule fois)

mais quand on parcourt les autres feuilles et on retrouve encore le nom "propsper" sur une autre feuille on procède de la meme facon en ajoutant la somme du depot.

voilà. merci pour votre aide.

Aussi pour la colonne "D", svp les cellules vide qui sont en dessous de certains noms veut dire que cest la meme personne.
cdlmt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
13 juin 2014 à 14:15
jai oublié de vous joindre le lien d'un fichier test que jai créé

https://www.cjoint.com/?3Fnonsqm5zs
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
13 juin 2014 à 14:18
Bonjour

Post un exemple du fichier avec les colonnes D et autres et les cas possibles sur cjoint.com, le premier n'est plus accessible

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
13 juin 2014 à 16:01
daccord
voici un exemple

https://www.cjoint.com/?3Fnqaa2cpwN
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
13 juin 2014 à 16:52
Voilà il faut créer dans chaque feuille les nouvelles colonnes H I J avec les formules pour faire le tri
Reprendre ensuite la macro en changeant dans la macro les lettres des colonnes D F G par celle des colonnes H I J
https://www.cjoint.com/?0FnqYoMhYif

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
13 juin 2014 à 18:13
ok merci

mais je veux trier seulement les données de la colonne F et les données de la colonne G seront intacte.

Si je vous comprends bien il me faut seulement les colonnes H et I et dans ma macro je procède aux modifications necessaire...

merci
crdlmnt
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
Modifié par via55 le 13/06/2014 à 18:31
Oui c'est ça
en H et I on obtient le nom associé à un dépôt chaque fois que le nom ou la somme change
Et le récapitulaif et les totaux comme tu le souhaitais peuvent donc se faire à partir de là
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
14 juin 2014 à 15:28
bjr Mr. svp jai quelque soucis que je ne comprends pas

voici un extrait d'une feuille que jai réalisé. Seulement quand j'applique votre formule dans les colonne J et K, il ya des 0 qui s'affiche à la place de certains noms, ce que je ne comprend pas et cela aura des repercussion sur les résultats lors de la compilation. le format des cellules qui contient le nom est standard

Mon deuxieme probleme est que dans la colonne D (Nom et prenoms) les cellules vide qui sont sous un nom signifient que cest la meme personne. Par exemple de D2 à D13 c'est la meme personne "Jules ces"

Maintenant lors du traitement sur ma feuille RECAP comment faire pour tenir compte de cela? svp

voici le lien pour le fichier exemple:

https://www.cjoint.com/?3FopBl0vbAk


voici le code de la feuille RECAP


Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("D" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("D" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne Aet addition des montants en colonne B et C
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("F" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)
End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End Sub
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
Modifié par via55 le 14/06/2014 à 16:02
La feuille est encore modifiée ! cette fois il y a plusieurs changements de montants en face de cellules vides; cela aurait été plus simple d'avoir la feuille complète dès le départ !
Bon alors on change tout :
En J2 de Feuil 1 mettre la formule : =SI(D2="";J1;D2) et étirer au bas de la colonne
En K2 mettre =SI(J2<>J1;F2;SI(F2<>F1;F2;0)) et étirer au bas de la colonne

Modifier ainsi la macro :

Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("J" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("J" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne A et addition des montants en colonne B
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("K" & x)


End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End Sub

Cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
19 juin 2014 à 10:14
bjr Mr via55
veuillez mexcuser. jétais souffrant et jai pas pu vs faire un retour. je vais essayer tout de suite sur les feuilles.
merci davance.
cdlmnt
0
manubeni Messages postés 33 Date d'inscription lundi 26 mai 2014 Statut Membre Dernière intervention 6 juin 2020
20 juin 2014 à 10:16
bjr Mr via55.
merci beaucoup pour votre aide.
jai essayé votre code. ca marche. mais quand je compile, le message d'erreur suivant s'affiche:

Erreur d'exécution '1004':
la methode Select de la classe Worksheet a échoué.

Quand je fais debogage, la ligne d'erreur est celle que jai mis en gras (Sheets(N).Select)
que dois-je faire svp?

voici mon code:


Sub recap()
'desactive rafraissement écran
Application.ScreenUpdating = False
' boucle sur les feuilles depuis la 2eme jusqu'à la dernière
For N = 2 To Sheets.Count
'selectionne la feuille
Sheets(N).Select
' dernière ligne non vide de la feuille
DL = Range("J" & Rows.Count).End(xlUp).Row
' boucle de la 2eme ligne à la dernière non vide de la feuille
For x = 2 To DL
' récup le nom en D
nom = Sheets(N).Range("J" & x).Value
' derniere ligne non vide de la feuille RECAP
DLR = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
' recherche du nom dans RECAP
resultat = Application.VLookup(nom, Sheets(1).Range("A2:A" & DLR), 1, False)
' si non trouvé la ligne où écrire sera la 1ere après la derniere non vide
'sinon on recherche en quel ligne est le nom dans la colonne A de RECAP
If (IsError(resultat)) Then ligne = DLR + 1 Else ligne = Application.WorksheetFunction.Match(nom, Sheets(1).Range("A:A"), False)
'Inscription dans RECAP du nom en colonne A et addition des montants en colonne B
With Sheets(1)
.Range("A" & ligne) = nom
.Range("B" & ligne) = .Range("B" & ligne).Value + Sheets(N).Range("K" & x)
.Range("C" & ligne) = .Range("C" & ligne).Value + Sheets(N).Range("G" & x)

End With

Next x

Next N

Sheets(1).Select

Application.ScreenUpdating = True

End Sub
0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
21 juin 2014 à 13:55
Bonjour manubeni

A première vue je ne vois pas ce qui cloche
As tu plusieurs classeurs différents?

Post moi ton classeur sur cjoint.com et indiques le lien fourni, (tu peux me l'indiquer en message privé si tu veux) je regarderai

Cdlmnt
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
21 juin 2014 à 16:44
Bonjour,

tu as bien 2 feuilles dans ce classeur ?
eric
0