Copier des cellules dans une autre feuille sous condition V2
Bonjour Ă tous.
Avant tout merci beaucoup đđ Ă tous ceux qui consacrent leur temps et leur savoir pour venir en aide aux esprits dĂ©sespĂ©rĂ©s devant la complexitĂ© dâexcel. đ€Ż
Jâai un tableau avec un premier onglet qui liste en Colonne A tous les noms de mes employĂ©s.
En colonne E, je place lâĂ©quipe Ă laquelle je les affecte (S0, S1 ... S4 et une Ă©quipe spĂ©ciale SX)
Jâai ensuite un onglet par Ă©quipe.
Et je voudrai que dans la colonne Ă de chacun de ces onglets les noms des employĂ©s viennent sâajouter (*), sâils appartiennent Ă lâĂ©quipe de lâonglet.
* Jâaimerai que lâajout se fasse sous la forme dâune Macro « mise Ă jour de lâonglet » qui sâactive manuellement via un bouton
Malheureusement je nâarrive Ă rien ! Câest dĂ©sespĂ©rant. Jâai vu un super Post de Tulipe_4 sur le sujet « copier des cellules dans une autre feuille sous condition » mais je nâai pas rĂ©ussi Ă adapter la formule et les noms notamment !! đ pourtant jâai lâimpression que câest exactement ce dont jâai besoin.
Je place le fichier en PJ (la forme est un peu bizarre car jâai enlevĂ© tous les Ă©lĂ©ments autres). JâespĂšre que jâai Ă©tĂ© comprĂ©hensible đ câest pas facile Ă dĂ©crire je trouve đ€
(Ps : je ne suis pas trĂšs bon, voire mĂȘme Nul đ En VBA).
Merci pour votre aide !!
Maurice.
Bonjour monsieur le Baron,
Salut Tulipe,
sans doute ainsi...
J'ai coupablement remplacé les 2 boutons par 2... boutons ActiveX !
Private Sub cmdGO_Click()
'
Dim iRow%, iRow1%, iRow2%, iRowT%
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
Call Tri(iRow)
If [A11] <> "" Then
iRow1 = 11
Do
iRow2 = Columns(5).Find(what:=Range("E" & iRow1).Value, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious).Row
With Worksheets("SPA " & CStr(Range("E" & iRow1).Value))
.Range("A13:E" & .UsedRange.Rows.Count).Value = ""
.Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(iRow2 - iRow1 + 1, 5).Value = Range("A" & iRow1).Resize(iRow2 - iRow1 + 1, 5).Value
End With
iRow1 = iRow2 + 1
Loop Until iRow2 = iRow
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub
A+
Bonsoir Curulis57.
Merci beaucoup pour ton aide đđ : câest exactement ce que je cherchais Ă faire.
Malheureusement je nâarrive pas Ă lâadapter Ă mon fichier (ni en la copiant, ni en retapant tout) !! đđą Voici le problĂšmes que je rencontre :
Quand je chercher à reproduire la macro elle affiche « erreur de compilation Sub ou Function non definie ».
- second petit problĂšme (mineur) : quand je souhaite faire fonctionner lâonglet SX en le renommant (par exemple BA), il affiche « erreur dâexĂ©cution « 9 » lâindice nâappartient pas Ă la sĂ©lection. Quand je clique sur Fin cela marche quand mĂȘme mais ça peut induire des gens en erreur : est-il possible de faire disparaĂźtre cette message box ?
Question par ailleurs pour apprendre :
- quelle est la signification de « private sub » par rapport à Sub tout court ?
Merci infiniment de ton aide ! Je suis confus de te redemander tout cela par manque de connaissance ! đ„Ž
Maurice.
Mes respects, monsieur le Baron,
je vois que "METTRE_A_JOUR_LA_SPA" se trouve dans le 'Module 4' , c'est-à -dire, un 'Module' général !!
Toi, tu as remis tes contrĂŽles Ă l'ancienne !
Pas de souci, chacun son truc mais dans ce cas, TOUTES les procĂ©dures appelĂ©es par ces macros (placĂ©es dans un module gĂ©nĂ©ral, veux-je dire) DOIVENT ĂȘtre placĂ©es elles-mĂȘmes dans un Module gĂ©nĂ©ral quelconque SANS oublier, dans ces macros "secondaires", de spĂ©cifier, pour chaque rĂ©fĂ©rence de RANGE mentionnĂ©e, la feuille d'origine... puisque le Module gĂ©nĂ©ral, qui couvre tout le fichier, ne peut pas la deviner.
Ceci...
If [A12] <> "" Then Range("A11:E" & iRow).Sort _... deviendrait obligatoirement ...
With Worksheets("SUIVI INDIV")
If .[A12] <> "" Then .Range("A11:E" & iRow).Sort _
key1:=.[E11], order1:=xlAscending, _
key2:=.[A11], order2:=xlAscending, _
key3:=.[B11], order3:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlNo
End With... oĂč With prĂ©cise la feuille d'origine et le point . prĂ©cise les Range se rĂ©fĂ©rant Ă With.
Tu suis ?
Pour le 2e point, as-tu simplement renommer l'onglet, feu 'SPA SX', en 'BA' ?
Malheureux ! Renomme-le bien vite 'SPA BA' !!!
Sinon... un fichier, stp !
A+
SOS CURILIS57 V2 !!
Alors non seulement je nâarrive pas Ă adapter la macro malgrĂ© tes conseils mais en plus je nâarrive pas Ă poster mon message ! Rien ne va plus. đ€Ż
Je disais donc, que je nâarrive Ă rien, mĂȘme en dĂ©plaçant la macro dans le fichier SUIVI INDIV et non dans un module (ce que je nâavais dâailleurs pas remarquĂ©, ce qui en dit long sur la maĂźtrise VBA !!)
en dĂ©sespoir de cause đ, je te place donc le fichier directement.
voici les points clés (que je ne suis pas parvenu à adapter)
- dans lâonglet suivi indiv, quand on met en place le tri par section (ou Ă©quipe) il faut que toute la ligne suive et non juste les 5 premiĂšres colonnes. En effet chaque nom est liĂ© Ă une liste de code qui donne son activitĂ© par jour de lâannĂ©e.
- pour les tri, il faudrait préparer 2 tri distincts
Le premier par section (S0, S1...) puis par grade selon un ordre particulier (COL, LCL, CBA, CNE, LTN, SLT, ASP, CC1, CCH, CPL, MP1, 1CL, MP2, 2CL, SDT, VDAT), puis par ordre alphabétique des noms puis prénoms.
Le second par « ad hoc » câest Ă dire : par ordre alphabĂ©tique de la colonne AD Hoc, puis par section puis par grade puis par nom puis par prĂ©nom.
- enfin pour la SPA SX, il faudrait que seuls les noms de la Colonne AD HOC (Et non section) avec le marquant SX Apparaissent dans lâonglet. Exemple : si je mets BA pour 3 personnes dans la colonne AD HOC et que je renomme SPA SX en SPA BA, il faut que les noms apparaissent peu importent leur section dans lâonglet SPA BA.
câest dĂ©jĂ beaucoup, et ça serait dĂ©jĂ super đ si en plus tu peux me rajouter des petits commentaires dans le code pour mâaider Ă comprendre et progresser ça serait extra.
En tout cas, merci đđpour toute ton aide : jâapprĂ©cie Ă©normĂ©ment et je ne regrette quâune chose : ĂȘtre trop nul pour pouvoir aider a mon tour ! đ