Recherche et addition de plusieurs valeurs dans différent onglet

Résolu/Fermé
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017
- 25 oct. 2017 à 00:10
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
- 27 oct. 2017 à 13:14
Bonjour à Tous,

Je ne suis pas expert de Excel alors je demande votre aide pour mon problème.

Je voudrais rechercher des valeurs sur 4 ou 5 Feuilles (dept 1, dept 2, dept 3 .. dept5) du même classeur. chaque tableau de ces feuilles a le même format colonne A "Code Projet" ,colonne B "engagé", colonne C "Reste à engager" , chaque feuille correspond à un département différent.
je voudrais afficher dans un onglet "Conso", un tableau colonne A "codes fonds", ou je récupère les codes fond de tout les départements "dept1 jusqu’à dept5", je supprime les doublons et je les copier cette colonne "codes fonds".
Puis sur la colonne B "total engagés de ma feuille "conso", je voudrais afficher la somme des engagés de chaque code fond (colonne B des feuilles "dept1 jusqu’à dept5"), et pareil pour le Reste à engager.

Merci infiniment pour votre aide, cela va beaucoup m'aider à avancer sur mon projet.

Cordialement,

10 réponses

via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490
25 oct. 2017 à 00:24
Re,

Postes une exemple de ton fichier sur cjoint.com comme demandé si tu veux avoir de l'aide car on a besoin de connaitre la structure de ton fichier

Cdlmnt
Via
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

25 oct. 2017 à 11:32
Merci via55
voici la maquette de mon fichier : https://www.cjoint.com/c/GJzhxprgvnd
0
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490
25 oct. 2017 à 12:59
Bonjour chou999

Pas besoin d'un bouton pou actualiser, une fonction personnalisée suffit :
https://mon-partage.fr/f/dWXpZhL9/

Cdlmnt
Via
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

25 oct. 2017 à 14:14
RE-Bonjour VIA,

Vous êtes maaagnifique :)))
Grand Merci, ça marche nickel.

J'ai repris la même fonction je l'ai appliquer sur les colonnes réalisé et RAE, et ça a marché.

https://www.cjoint.com/c/GJzmf61tQwd

Il me reste un seul truc, sur l'onglet "Conso", je voudrais récupéré les codes fond triés et sans doublons automatiquement, après la mise à jour des fiches département, pourrais-tu m'aider la dessus, je suis partie dans des blocs de codes de tri et de copie (voir ci dessous), mais n'a pas l'aire d'être bon:


Sheets("DIR1").Select
Range("A7:A200").Select
Selection.Copy
Sheets("CONSO").Select
Range("A2").Select

Sheets("DIR1").Select
Range("A224:A242").Select
Range("A242").Activate

Range("A30:A229").Select
Selection.Copy
Sheets("CONSO").Select

Range("A1").Select
ActiveSheet.Paste
Range("A2:A171").Select
Application.CutCopyMode = False


Je vous remercie infiniment,
Chaimaa
0

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

Posez votre question
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490
25 oct. 2017 à 17:58
Re

Macro à mettre dans un module de l'éditeur VBA (peut être à la suite des autres) puis à lancer depuis la page CONSO depuis l'onglet Developpeur - Macros :
Sub codes()
x = 1
' boucle sur feuilles
For f = 2 To 6
Dim ligneF As Long
'dernière ligne remplie
ligneF = Sheets(f).Columns(1).Find("*", , , xlWhole, xlByColumns, xlPrevious).Row
For n = 2 To ligneF
' si commence par P
If Left(Sheets(f).Range("A" & n), 1) = "P" Then
'incrémentation de x et copie en ligne x de CONSO
x = x + 1
Sheets("CONSO").Range("A" & x) = Sheets(f).Range("A" & n)
End If
Next
Next
' suppression des doublons
Range("A1:A" & x).Select
    ActiveSheet.Range("$A$1:$A$21").RemoveDuplicates Columns:=1, Header:=xlYes
    ' tri alpha
    Range("A1:A" & x).Select
    ActiveWorkbook.Worksheets("CONSO").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CONSO").Sort.SortFields.Add Key:=Range("A2:A" & x), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("CONSO").Sort
        .SetRange Range("A1:A" & x)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Cdlmnt
Via
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

25 oct. 2017 à 20:46
Via,
Chapeau !
Vous êtes génial :)), ça a marché très bien, excellent job !

Je vous souhaite une très bonne continuation

Grand Merci
0
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490 > chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

25 oct. 2017 à 21:40
Tant mieux

Bonne continuation également et n'hésites pas à revenir si nécessaire

Cdlmnt
Via
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

26 oct. 2017 à 18:13
Bonjour Via,

Je reviens vers toi, concernant, le même sujet :)

J'ai commencé à travailler sur mon fichier, "le vrai", les fonctions ils ont marché nickel sans aucun pb (je t'en remercie) par contre la macro, j'ai fais toutes les modifications pour l'adapter à mon fichier, mais ça ne marche pas !
j'ai eu un message d'erreur "variable objet ou variable de bloc with non définie", puis après j'ai fais des modifications partout et bim ! bug total :p

l'idée reste toujours la même chercher les codes, commençant par P, puis les trier, supprimer les doublons puis les stocker dans le tableau conso, comme ça à l'aide des fonctions, je pourrais actualiser les budgets.

https://www.cjoint.com/c/GJAqkHhxDKd

En Pj, le fichier si tu pourrais m'aider la-dessus aussi :)



grand merci à l'avance,

Cordialement,
Chaimaa
0
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490
26 oct. 2017 à 18:55
Bonjour chou

Ton fichier avec la macro rectifiée
https://mon-partage.fr/f/pHOJUfkA/

Par contre j'ai perdu les liaisons qui devaient y avoir avec une autre feuille

Cdlmnt
Via
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

26 oct. 2017 à 21:58
Bonsoir Via,

Je n'ai pas compris en fait, pour les liaisons, et je n ai pas retrouvé la macro, ni les fonctions :)) ! j'ai peut être un pb sur excel Exel, j’utilise un un ordi chez moi qui déconne en plus :p
0
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490 > chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

Modifié le 26 oct. 2017 à 22:41
Bon alors je t'envoie le code de la macro à mettre dans un module de l'éditeur VBA
Sub codes()
x = 7
' boucle sur feuilles
For f = 2 To 5
Dim ligneF As Long
'dernière ligne remplie
ligneF = Sheets(f).Columns(1).Find("*", , , xlWhole, xlByColumns, xlPrevious).Row
For n = 2 To ligneF
' si commence par P
If Left(Sheets(f).Range("A" & n), 1) = "P" Then
'incrémentation de x et copie en ligne x de CONSO
x = x + 1
Sheets(1).Range("B" & x) = Sheets(f).Range("A" & n)
End If
Next
Next


' suppression des doublons et remise en forme
   Range("B8:B39").Select
    ActiveSheet.Range("$B$8:$B$39").RemoveDuplicates Columns:=1, Header:=xlNo
    Range("B8:B22").Select
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .Color = 10498160
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
     Range("B23:B39").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark2
        .TintAndShade = -9.99786370433668E-02
        .PatternTintAndShade = 0
    End With
End Sub


Tu n'as plus après qu'à assigner cette macro au bouton que tu as mis dans la feuille
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

27 oct. 2017 à 09:58
Bonjour VIA,

Merci pour le code, ça marche très bien sur, ça actualise les codes nickel!

Par contre, les chiffres du tableau, il ne se mettent pas à jour, j'ai réussi à faire cela sur mon fichier test, en lançant la macro, les fonctions mettent à jour mes champs engagé, .. atterissage, et je ne vois pas du tout pk ça ne marche pas sur mon fichier.

Merci pour ton aide,

Chou
0
chou999
Messages postés
9
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
27 octobre 2017

27 oct. 2017 à 10:25
Via,

Ci joint le fichier, en fait, quand je fais un tri simple de A à Z, sur la liste des codes sur ma feuille "Conso direction", les fonctions affichent les totaux.

https://www.cjoint.com/c/GJBizQPjSud

et Si j'appui sur le bouton actualiser les codes projets, j'ai des zéros partout :p

J'ai cassé ma tête pour trouver lié les fonctions avec la macro affecté au bouton ! je n'ai pas trouvé.

Merci énormément pour tes efforts !

Bonne journée,

CHOU
0
via55
Messages postés
13880
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
26 septembre 2022
2 490
27 oct. 2017 à 13:14
Bonjour chou

Effectivement le reporting annule les résultats des fonctions personnalisées, je ne sais pas pourquoi !!
Pour les réactiver ajoutes ces lignes en fin de la macro codes entre le dernier End with et le End sub :
For n = 8 To 22
   Range("C" & n).FormulaR1C1 = "=Budget(RC[-1])"
   Range("D" & n).FormulaR1C1 = "=Engagé(RC[-2])"
   Range("E" & n).FormulaR1C1 = "=receptionné(RC[-3])"
   Range("F" & n).FormulaR1C1 = "=mforte(RC[-4])"
   Range("G" & n).FormulaR1C1 = "=mfaible(RC[-5])"
    Range("H" & n).FormulaR1C1 = "=atterissage(RC[-6])"
   Next


De plus tu peux supprimer le module 2 qui ne contient que des enregistrements de macros pour essai et ne sert à rien

Bonne journée
Via
0