Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mise à jour des onglets

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 !

jozerebel

XLDnaute Occasionnel
Bonjour,

J'ai des onglets (nombre que je ne maîtrise pas, d'autant que de nouveaux onglets peuvent être créés).

Il me faudrait une macro qui puisse regarder l'onglet sur lequel l'utisateur est positionné, récupérer les données en D en fonction de des infos de B et les recopier dans les onglets précédents si la valeur de B est retrouvée, sachant que l'architecture des onglets est la même.

Il faudrait également une macro qui puisse mettre à jour l'onglet actif en fonction des éléments des onglets précédents car un utilisateur ne se positionne pas forcément sur le dernier onglet pour saisir ses informations...


s'il y a déjà une info dans la cellule à traiter, la macro peut la supprimer car les infos doivent être les mêmes. Attention si la cellule source est vide et que la cellule de destination n'est pas vide, il ne faut pas la vider...


J'ignore si j'ai bien expliqué donc je mets un fichier en exemple!!!

Merci de votre aide précieuse...

A plus.
 

Pièces jointes

Re : Mise à jour des onglets

Bonjour,

Avant de te mettre le code que j'ai réalisé, peux tu confimer :

Je suis en feuille "Mars", sur B2.
Tu veux que l'on mettre à jour les cellules D des feuilles Janvier et février si B2 de MArs se retrouve en colonne B de janvier et Février ?

Merci de confirmer.

Amicalement
 
Re : Mise à jour des onglets

Re,

Code à essayer :

Code:
Sub test()
'MAcro Dan pour Jozerbel le 19/11/2010
Dim sh As Byte, ws As Byte
Dim lg As Integer
Dim plage As Range
Dim nom
sh = ActiveSheet.Index
Set plage = Sheets(sh).Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row)
For Each nom In plage
    For ws = 1 To Sheets.Count
        If ws <> sh Then
        On Error Resume Next
        lg = WorksheetFunction.Match(nom, Sheets(ws).Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row), 0) + 1
        If lg > 0 Then Sheets(ws).Range("D" & lg) = Sheets(sh).Range("D" & nom.Row): lg = 0
        End If
    Next
Next
End Sub
Amicalement
 
Re : Mise à jour des onglets

Merci, je vais tester et te tiens au courant!

Juste une question:

dans la macro, je comprends que les onglets précédents se mettent à jour avec les infos de l'onglet actif mais comment résoudre mon deuxième problème : mettre à jour l'onglet actif avec les onglets précédents. D'autant que si j'ai une cellule vide dans l'onglet actif mais une cellule non vide dans les onglets précédents, il ne faut pas effacer ces données!

Je précise que pour moi les onglets précédents sont ceux qui sont à gauche de l'onglet actif, pas forcéement le numéro de l'onglet considéré par Excel. En effet, l'utilisateur peut créer un onglet et le positionner pas forcément en dernière position.

Merci pour tes réponses!
 
Dernière édition:
Re : Mise à jour des onglets

Re,

comment résoudre mon deuxième problème : mettre à jour l'onglet actif avec les onglets précédents.
Il faut faire un deuxième code. La cellule vide n'est pas un souci. Par contre si tu as un doublon, tu fais quoi. Exemple : en Mars on a un nom "d" qui est aussi reprit sur Janvier et sur Février.

Je précise que pour moi les onglets précédents sont ceux qui sont à gauche de l'onglet actif, ...
Ok, dans le code tu remplaces :
Code:
For ws = 1 To Sheets.Count
par
Code:
For ws = 1 To Sh

A te relire
 
Dernière édition:
- 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

Réponses
4
Affichages
331
Réponses
5
Affichages
231
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…