Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Capitaine Flame

XLDnaute Nouveau
Bonjour,

Je fais appel à votre maîtrise de Excel et les macro.

Voici la macro :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim derligne As Integer

If Target.Address <> "$b$2" Then Exit Sub

Range("b40:h51").ClearContents

For Each rw In Sheets("Licenciés").Rows
If Sheets("Licenciés").Cells(rw.Row, 1).Value = "" Then Exit For
If Sheets("Licenciés").Cells(rw.Row, 9).Value = Target.Value Then
derligne = Range("b65536").End(xlUp).Row + 1
Cells(derligne, 2).Value = Sheets("Licenciés").Cells(rw.Row, 1).Value
Cells(derligne, 3).Value = Sheets("Licenciés").Cells(rw.Row, 2).Value & " " & Sheets("Licenciés").Cells(rw.Row, 3).Value
Cells(derligne, 5).Value = Sheets("Licenciés").Cells(rw.Row, 4).Value
Cells(derligne, 6).Value = Sheets("Licenciés").Cells(rw.Row, 5).Value & " " & Sheets("Licenciés").Cells(rw.Row, 6).Value
Cells(derligne, 8).Value = Sheets("Licenciés").Cells(rw.Row, 7).Value

End If

Next rw

End Sub


Dans cette macro, on fait appelle à la valeur de la case B2 pour la suite du calcul. Or, dans cette cellule, j'ai une formule qui prend le résultat d'une cellule sur un autre onglet. J'ai donc 2 options : soit j'utilise le résultat texte de cette cellule, soit je vais chercher le résultat de la cellule initiale (cellule de copie pour B2)qui se trouve en onglet Départ B18.

Avez-vous une solution ?

Merci pour vos réponses.
 
Re : Aide sur macro

Bonjour Capitaine Flame,

Je ne sais pas où est ton problème et tu ne nous le dis pas. Dans ces conditions, difficile de te venir en aide.

En lisant le code de ta macro, nulle part, tu ne fait appel à la valeur de la case B2, comme tu nous le dis :
Dans cette macro, on fait appelle à la valeur de la case B2 pour la suite du calcul. Or, dans cette cellule, j'ai une formule qui prend le résultat d'une cellule sur un autre onglet.

Mais tu testes seulement si la dernière cellule modifiée est la cellule "B2".

Peux-tu nous réexpliquer ton problème et eventuellement nous joindre un fichier exemple avec des données anonymisée ?

A+
 
Re : Aide sur macro

Re,

Je vous joins mon fichier pour se rendre compte de la taille.

on retrouve l'onglet "Licenciés" puis les onglets de "J1 à J20 et S1 à S4". La case B2 est toujours la case d'accroche pour la catégorie sur ces onglets.

Maintenant, sur la macro ci-dessus, je dois remplir les cases B40 à H51 des onglets "J1 à S4" (ne pas s'occuper de l'onglet "C1") en reprenant les infos dans l'onglet "Licenciés" de la façon suivante :
- Onglet "Licenciés" colonne A va dans onglets "J1 à S4" colonne B
- Onglet "Licenciés" colonne B et C va dans onglets "J1 à S4" colonne C
- Onglet "Licenciés" colonne D va dans onglets "J1 à S4" colonne E
- Onglet "Licenciés" colonne E et F va dans onglets "J1 à S4" colonne F
- Onglet "Licenciés" colonne H va dans onglets "J1 à S4" colonne H

Dans la macro, cet la cellule B2 pour chaque onglet de "J1 à S4" qui sert de référence. Or, cette cellule renvoie à chaque fois sur une cellule de l'onglet "Départ".

je souhaite donc utiliser la macro ci-dessus pour les onglet de "J1 à S4".

Voilà, j'espère que cela vous aidera.

Les noms dans le listing sont fantaisiste. pour ce qui est des autres onglets, je m'en sers pour d'autres infos. D'ailleurs, dans chaque planning (onglet "J1 à S4"), j'ai déjà défini des formules de rattachement.

Merci pour votre aide.
 

Pièces jointes

Re : Aide sur macro

Bonjour le fil, bonjour le forum,

Je n'ai pas ouvert ton fichier, mais si B2 contient une formule il est préférable d'utiliser la macro événementielle Calculate dans l'onglet. Sinon avec l'événement Change il te faut utiliser la cellule initiale mais le code sera dans l'onglet Départ.
 
Re : Aide sur macro

Re-bonjour,

Je ne suis toujours pas sûr d'avoir tout compris mais au cas où, voici la macro par laquelle il faut remplacer la tienne dans la feuille "J1".

J'utilise l'évènement "Worksheet_Activate()" plutôt que "Worksheet_Change()", car dans tes onglets, il y a plein de formules et surtout, tu n'entres rien manuellement, surtout pas en B2.

Dis-moi si cela te convient :
VB:
Private Sub Worksheet_Activate()
    Dim derligne As Integer, rw As Range
    Range("b40:h51").ClearContents
    For Each rw In Sheets("Licenciés").Rows
        If Sheets("Licenciés").Cells(rw.Row, 2).Value = "" Then Exit For
        If Sheets("Licenciés").Cells(rw.Row, 8).Value = [B2] Then
            derligne = Range("b65536").End(xlUp).Row + 1
            Cells(derligne, 2).Value = Sheets("Licenciés").Cells(rw.Row, 1).Value
            Cells(derligne, 3).Value = Sheets("Licenciés").Cells(rw.Row, 2).Value & " " & Sheets("Licenciés").Cells(rw.Row, 3).Value
            Cells(derligne, 5).Value = Sheets("Licenciés").Cells(rw.Row, 4).Value
            Cells(derligne, 6).Value = Sheets("Licenciés").Cells(rw.Row, 5).Value & " / " & Sheets("Licenciés").Cells(rw.Row, 6).Value
            Cells(derligne, 8).Value = Sheets("Licenciés").Cells(rw.Row, 7).Value
        End If
    Next rw
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
497
Réponses
5
Affichages
249
Réponses
1
Affichages
181
Réponses
4
Affichages
187
Réponses
2
Affichages
207
Réponses
8
Affichages
474
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
176
Retour