Question

J'ai deux feuilles de calcul...quand l'une est modifiée d'une certaine manière, je souhaite exécuter une macro qui modifie la seconde de manière appropriée.J'ai déjà isolé l'événement sur lequel je dois agir (la modification d'une cellule dans une colonne particulière), je n'arrive tout simplement pas à trouver d'informations concrètes sur l'accès et la modification d'une autre feuille de calcul (cette feuille de calcul est située sur un autre réseau local). partagez aussi....l'utilisateur a cependant accès aux deux).

Toute aide est la bienvenue.Les références sur la façon de procéder ou quelque chose de similaire sont tout aussi bonnes que des exemples de code concrets.

Était-ce utile?

La solution

Dans Excel, vous écririez probablement simplement du code pour ouvrir l’autre feuille de calcul, la modifier, puis enregistrer les données.

Voir ce tutoriel pour plus d'informations.

Je devrai modifier mon VBA plus tard, alors faites comme si c'était un pseudocode, mais cela devrait ressembler à ceci :

Dim xl: Set xl = CreateObject("Excel.Application")
xl.Open "\\the\share\file.xls"

Dim ws: Set ws = xl.Worksheets(1)
ws.Cells(0,1).Value = "New Value"
ws.Save

xl.Quit constSilent

Autres conseils

Vous pouvez ouvrir une feuille de calcul sur une seule ligne :

Workbooks.Open FileName:="\\the\share\file.xls"

et faites-y référence comme le classeur actif :

Range("A1").value = "New value"

Après avoir joué avec cela pendant un moment, j'ai trouvé que le pseudo-code de Michael était le plus proche, mais voici comment j'ai procédé :

Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "\\owghome1\bennejm$\testing.xls"
xl.Sheets("Sheet1").Select

Ensuite, manipulez la feuille...peut-être comme ça :

xl.Cells(x, y).Value = "Some text"

Lorsque vous avez terminé, utilisez ces lignes pour terminer :

xl.Workbooks.Close
xl.Quit

Si des modifications ont été apportées, l'utilisateur sera invité à enregistrer le fichier avant sa fermeture.Il existe peut-être un moyen de sauvegarder automatiquement, mais cette méthode est en fait meilleure, donc je la laisse telle quelle.

Merci pour votre aide!

Copiez ce qui suit dans votre ThisWorkbook objet de surveiller des changements spécifiques.Dans ce cas, lorsque vous augmentez une valeur numérique vers une autre valeur numérique.

Attention :tu devras remplacer Workbook-SheetChange et Workbook-SheetSelectionChange avec un trait de soulignement.Ex: Workbook_SheetChange et Workbook_SheetSelectionChange le trait de soulignement est échappé dans le code Markdown.

Option Explicit
Dim varPreviousValue As Variant ' required for IsThisMyChange() . This should be made more unique since it's in the global space.


Private Sub Workbook-SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' required for IsThisMyChange()
  IsThisMyChange Sh, Target
End Sub

Private Sub Workbook-SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  '  This implements and awful way of accessing the previous value via a global.
  '  not pretty but required for IsThisMyChange()
  varPreviousValue = Target.Cells(1, 1).Value ' NB: This is used so that if a Merged set of cells if referenced only the first cell is used
End Sub

Private Sub IsThisMyChange(Sh As Object, Target As Range)
  Dim isMyChange As Boolean
  Dim dblValue As Double
  Dim dblPreviousValue As Double

  isMyChange = False

  ' Simple catch all. If either number cant be expressed as doubles, then exit.
  On Error GoTo ErrorHandler
  dblValue = CDbl(Target.Value)
  dblPreviousValue = CDbl(varPreviousValue)
  On Error GoTo 0 ' This turns off "On Error" statements in VBA.


  If dblValue > dblPreviousValue Then
     isMyChange = True
  End If


  If isMyChange Then
    MsgBox ("You've increased the value of " & Target.Address)
  End If


  ' end of normal execution
  Exit Sub


ErrorHandler:
  ' Do nothing much.
  Exit Sub

End Sub

Si vous souhaitez modifier un autre classeur sur cette base, je penserais d'abord à vérifier si le classeur est déjà ouvert...ou encore mieux, concevez une solution capable de regrouper toutes vos modifications et de les effectuer en même temps.Changer continuellement une autre feuille de calcul en fonction de votre écoute de celle-ci pourrait être douloureux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top