Création macro bouton

Salutation,

10ano.xlsx (159.20 Ko)

Ci-joint le fichier.

C'est un fichier partager, j'ai du enlever les infos confidentielles et j'ai laissé les colonnes qui nous intéresse. J'avais fait une formule matricielle sauf qu'elle prend beaucoup de place et le fichier rame.

La formule permet de savoir d'une semaine sur l'autre si une note a déjà été mise où non.. (colonne AZ à partir de la S46)

Donc je me suis dis que si un bouton pouvais permettre de lancé cette formule quand on clique dessus puis de copier coller les valeurs ça devrait annulé le problème

1- En classeur partagé c'est possible ?

2- Pouvez-vous m'aider en me proposant une macro ? Je n'ai pas appris à en faire et du coup bah c'est un peu la looze... je sais juste enregistrer des bout de macro et les placer; après pour faire un bouton et les créer ça me dépasse

Merci par avance pour toute aide apportée !

Bonjour,

La formule permet de savoir d'une semaine sur l'autre si une note a déjà été mise où non.. (colonne AZ à partir de la S46)

Evidemment, on sent tout de suite la lourdeur des fonctions matricielles.

Je pense qu'il y a une autre solution, dès qu'une semaine est terminée, tu peux faire un TCD dans le même onglet, et la semaine suivante te référer aux valeurs du TCD.

Mais je ne sais pas quelles valeurs tu cherches ! par exemple semaine 46 on voit 4 fois

OF 89920PH 50

Merci pour ton retour
Effectivement cet OF avec cette phase apparait plusieurs fois car il contient un grand nombre d'heure et donc il vient glisser sur un grand nombre de semaine (mais comme j'ai virer les dates ca ne se vois pas)

Je cherche à retrouver la note mise par rapport à l'OF et à ca Phase enfaite ^^ Après si le même OF et la même phase apparaisse la même note s'affiche sinon c'est que les gars on pas bien fait leur job et là je les tapes

Des fois les semaine précédente sont modifiées donc peut être qu'un TDC fonctionnerai mais je ne vois pas comment tu vois ca ?,?

Des fois les semaine précédente sont modifiées donc peut être qu'un TDC fonctionnerai mais je ne vois pas comment tu vois ca ?,?

par une mise à jour du TCD lors du changement de feuille, je vais faire un essai ...

sinon on peut aussi le faire par macro en effet

4ano.xlsm (133.78 Ko)
Private Sub Worksheet_Deactivate()
On Error Resume Next ' ca où la feuille S-1 n'existe pas ou n'a pas de TCD
    feuille = "S" & Replace(ActiveSheet.Name, "S", "") - 1
    ' MsgBox feuille & " mise à jour !"
    Sheets(feuille).PivotTables(1).PivotCache.Refresh
End Sub

voir semaine 47 avec TCD semaine 46 colonne BA (j'ai laissé tes formules)

=SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Déjà noté";'S46'!$BB$3;"OF";G4;"PH";H4);"")

Pour le TDC j'ai ajouter l'analyse des réglages sinon la note de la semaine dernière n'est pas prise en compte du coup ca donne cette formule

=SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Déjà noté";'S46'!$BB$3;"OF";G4;"PH";H4);"")+SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Analyse réglage (voir onglet nomenclature)";'S46'!$BB$3;"OF";G4;"PH";H4);"")

Ca à l'air de fonctionner ! ce sera moins lourd du coup ?

Le bout de macro permet quoi ?

La macro permet juste la mise à jour du TCD de la semaine précédente quand on arrive sur un onglet.

Mais j'avoue que si on passe directement de S45 à S47, c'est le TCD de la S46 qui se met à jour. Sans macro, il suffirait de faire clic droit sur le TCD avant de quitter la page. Ce serait préférable !

D'acc, merci je vais tester si j'ai encore des prbl je rouvrirai le sujet.

Bonne journée !

Hello !

Je reviens par ici

J'ai mis le code que tu m'a donné sur mon fichier mais il n'a pas l'air de vouloir fonctionné du coup j'ai retest en partageant le fichier que tu m'as link et ca ne fonctionne pas (sauf erreur de ma part)

Les TDC fonctionnent sauf que en classeur partager on ne peut pas les actualiser... #culdesac

En effet, on peut partager la source mais pas les TCD ! cela fait partie des impossibilités.

Pas de #culdecas, il faut envisager une macro. Je regarde.

Fais Ctrl+Maj+N (comme "notation") à partir de la seconde semaine

Il faut qu'elles soient dans l'ordre

J'ai mis le résultat en colonne BA pour comparer, je ne trouve pas toujours la même chose, pourrais tu vérifier ?

Option Explicit
Sub dejanote()

If ActiveSheet.Index > 2 Then

    Dim note As Object, resultat(), tbl, derL As Long, i As Long, n%, fap As Worksheet, fav As Worksheet

    Set fap = ActiveSheet
    Set fav = Sheets(ActiveSheet.Index - 1) ' feuille avant
    Set note = CreateObject("Scripting.Dictionary")

    derL = fav.Cells(Rows.Count, "G").End(xlUp).Row
    tbl = fav.Range("G2:AY" & derL).Value
    n = UBound(tbl, 2)
    For i = 1 To UBound(tbl)
        note(tbl(i, 1) & "|" & tbl(i, 2)) = tbl(i, n)
    Next

    derL = fap.Cells(Rows.Count, "G").End(xlUp).Row
    tbl = fap.Range("G2:H" & derL).Value
    ReDim resultat(1 To UBound(tbl))
    For i = 1 To UBound(tbl)
        resultat(i) = note(tbl(i, 1) & "|" & tbl(i, 2))
    Next
    fap.Range("BA2").Resize(UBound(resultat), 1) = Application.Transpose(resultat)

End If
End Sub
1ano.xlsm (124.77 Ko)

Ca marche pour toi si tu partage le classeur ?,?

Sinon pour répondre à ta question :

- s48 of 90395 la macro n'affiche rien

- s47 elle affiche bien 4

- s46 il y a une note de 4 dans la colonne AY donc sans doute que la macro ne vient pas reprendre la note en BA ?

- s48 of 90395 la macro n'affiche rien

- s47 elle affiche bien 4

- s46 il y a une note de 4 dans la colonne AY donc sans doute que la macro ne vient pas reprendre la note en BA ?

je n'ai pris que les valeurs de AY, je n'avais pas vu en effet que si elle était absente je devais prendre celle de la semaine antérieure.

ok je corrige.


Un fichier partagé accepte les macros, il n'accepte pas leur modification tant que le partage est actif.

Sinon, pour partager plus facilement, tu as google sheets.

Légère correction ...

Option Explicit
Sub dejanote()

If ActiveSheet.Index > 2 Then

    Dim note As Object, resultat(), tbl, derL As Long, i As Long, n%, fap As Worksheet, fav As Worksheet

    Set fap = ActiveSheet
    Set fav = Sheets(ActiveSheet.Index - 1) ' feuille avant
    Set note = CreateObject("Scripting.Dictionary")

    derL = fav.Cells(Rows.Count, "G").End(xlUp).Row
    tbl = fav.Range("G2:AZ" & derL).Value
    n = UBound(tbl, 2)
    For i = 1 To UBound(tbl)
        note(tbl(i, 1) & "|" & tbl(i, 2)) = IIf(tbl(i, n - 1) = "", tbl(i, n), tbl(i, n - 1))
    Next

    derL = fap.Cells(Rows.Count, "G").End(xlUp).Row
    tbl = fap.Range("G2:H" & derL).Value
    ReDim resultat(1 To UBound(tbl))
    For i = 1 To UBound(tbl)
        resultat(i) = note(tbl(i, 1) & "|" & tbl(i, 2))
    Next
    fap.Range("AZ2").Resize(UBound(resultat), 1) = Application.Transpose(resultat)

End If
End Sub
0ano-1.xlsm (122.26 Ko)

J'ai pu jeter un coup d’œil et ça a l'air de fonctionner !

Merci Bonne soirée ! #tumereverrassijamaisjevoisunptitprbl

Coucou Steelson !

J'ai une petite question/demande la macro fonctionne pour un onglet après il faut actualiser sur l'autre etc.. Es-ce qu'on peut la lancer une fois pour qu'elle passe sur les onglets des semaines ?

Par avance merci.

On peut ajouter ceci ... elle sera déclenchée quand tu sélectionneras une feuille.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    dejanote
End Sub
2ano-2.xlsm (123.28 Ko)

Super merci ^^

J'ai tâtonner à le trouver mais j'ai trouver pour créer un module ! D'ailleurs j'ai 2 "thisworkbook"/"thisworkbook1" dans mon fichier ca a pas l'air de poser de problème mais c'est étrange x)

Bonne journée Steelson

Rechercher des sujets similaires à "creation macro bouton"