Menu

Appliquer une macro à tous les onglets du classeur

-
Bonjour,

Je suis novice en VBA, je n'ai pas reçu de cours sur cette pratique. Je me documente sur le net et je comprends un petit peu la logique des codes.
J'ai réussi à obtenir ce code VBA pour rendre 2 cellules interdépendantes (l'une modifie l'autre et vice versa).

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo fin
nom = Target.Name.Name
If InStr(nom, "?") > 0 Then
nom = Left(nom, InStr(nom, "?"))
Application.EnableEvents = False
num = 1
encor:
Range(nom & num).Value = Target.Value
num = num + 1
GoTo encor
End If
fin:
On Error GoTo 0
Application.EnableEvents = True
End Sub


Elle fonctionne correctement pour lier 2 cellules sur un onglet, par contre quand il s'agit de lier 2 cellules d'onglets différents, le code ne fonctionne plus...
Pensez-vous que le problème est dû à la cible de la macro ? Ou alors est-il dû à une impossibilité de le faire sur 2 onglets différents ?

Merci d'avance de votre aide.

Cordialement


Configuration: Windows / Firefox 63.0


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

3 réponses

Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Tout ça ne parait pas très orthodoxe !

Un excellent cours VBA pour débutant (gratuit) :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
Commenter la réponse de Patrice33740
0
Merci
Bonjour,

merci Patrice33740 de m'avoir répondu. Effectivement tout cela ne doit pas être très standardisé !!! J'ai parcouru très rapidement le cours que vous m'avez envoyé. Effectivement il a l'air très intéressant mais il faudrait une bonne centaine d'heure d'entrainement pour éventuellement comprendre le problème qui se pose à moi.
Pourrais-je être éclairé par un spécialiste VBA sur la macro ci-dessus pour la faire fonctionner sur l'ensemble du classeur et non sur une seule feuille ?

Cordialement
Commenter la réponse de Crazydunker
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Essaies ce code :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim n As Name
Dim f As String
  On Error GoTo fin
  nom = Target.Name.Name
  If InStr(nom, "?") > 0 Then
    nom = Left(nom, InStr(nom, "?"))
    Application.EnableEvents = False
    num = 1
encor:
    Set n = ThisWorkbook.Names(nom & num)
    f = Replace(Split(n.RefersTo, "!")(0), "=", "")
    Worksheets(f).Range(nom & num).Value = Target.Value
    num = num + 1
    GoTo encor
  End If
fin:
  On Error GoTo 0
  Application.EnableEvents = True
End Sub


Il faut le mettre dans chaque feuille concernée

Commenter la réponse de Patrice33740
1 rponse | HidupMusik | 37 Nap- Út az első világháborúig