Appliquer une macro à tous les onglets du classeur
Crazydunker
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
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).
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
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. |
A voir également:
- Appliquer une macro à tous les onglets du classeur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Restaurer les onglets chrome - Guide
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
3 réponses
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
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
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
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
Bonjour,
Essaies ce code :
Il faut le mettre dans chaque feuille concernée
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