IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[Excel] Mise à jour par colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Par défaut [Excel] Mise à jour par colonnes
    Bonjour à tous,

    Je suis un (grand) débutant concernant VBA sous Excel et ma première mission, si je veux bien la remplir, est la suivante :

    Soit un tableau Excel classique, assez gros pour se donner la peine de faire une ou deux petites macros pour l'améliorer. Et notamment une fonction de mise à jour par colonne (et non du document entier).

    Ainsi, je désirerais, à chaque fois qu'un utilisateur vient modifier une colonne du tableau, que la date de mise à jour s'affiche automatiquement dans la première cellule de cette colonne.

    Sur le principe, je suppose qu'il faut faire la fonction suivante : Si Excel détecte une modification dans la colonne X alors il faut changer la date de mise à jour dans la cellule "AX" sinon il ne faut rien modifier.

    Ne trouvant de fonction sous Excel qui permette cela, je suppose qu'il faut passer par du VBA pour y arriver.

    Sauf que, j'ai fait quelques essais ce matin sous VBA, juste pour voir à quoi ressembler l'environnement et déjà, pour la moindre petite fonction test, il m'affiche déjà des erreurs... Ca commence bien !

    Est-ce que l'un d'entre vous aurez une idée concernant mon problème ? Faut-il passer par une procédure ou une fonction ? (N'ayant jamais fait de programmation, faut avouer que les termes semblent un peu abscons, au départ...)

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut


    Lorsque que tu es dans l'éditeur VBA (ALT+F11)
    Tu double-cliques sur la feuille sur laquelle vont être effectuées les modifs
    Et tu colles ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim NumCol As Integer
      NumCol = Target.Column
      ' Inscrit la date et heure
      ActiveSheet.Cells(1, NumCol).Value = Format(Now(), "dd/mm/yy hh:mm")
    End Sub
    Suivant ce que tu veux inscrire, il suffit de changer le format de Now()

    Voilà

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Par défaut
    Waouh, ça, c'est une réponse rapide, claire et nette. Et ça marche !

    Un grand merci, BrunoM45 .

    Pour ne pas copier bêtement sans comprendre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)
    -> Cette ligne indique donc qu'il s'agit d'une procédure... C'est à dire qui ne renvoit pas de valeur mais qui fait uniquement une (ou plusieurs) action(s). Jusque là, ça va.

    Par contre, je comprends moins la partie "ByVal Target As Range"...

    -> Là, c'est pour définir la variable NumCol comme étant un entier...

    -> Là, je suis moins sûr... On affecte à la variable NumCol le numéro de la colonne où l'on se situe ? C'est bien ça ? Ca signifie alors que Target.Column est donc une fonction intégrée à VBA pour détecter la colonne active ? (J'ai pourtant averti que j'étais une quiche )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Inscrit la date et heure
      ActiveSheet.Cells(1, NumCol).Value = Format(Now(), "dd/mm/yy hh:mm")
    End Sub
    -> Bon, ben, là, c'est pour aller à la première cellule de la colonne active pour y coller la fonction Now() d'Excel sous un certain format.

    Voilà... Si tu pouvais éventuellement m'éclairer sur ce joli petit bout de code qui va me rendre des services ^^.

    Par contre, j'ai constaté que la condition If était effectivement inutile dans le sens où c'est l'utilisateur lui-même qui, en modifiant une colonne ou non, va réaliser la condition If. Fallait y penser.

    Encore merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    En fait lorsque tu es dans le code VBA de ton Objet "Feuil",
    Tu sélectionnes "Worksheet" dans la liste ou est marqué "Général", puis dans la seconde liste tu sélectionnes "Change"
    Et là VBA te met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)
    Le mot clé ByVal indique qu'un argument est passé comme valeur.
    Target : c'est la variable
    As Range : c'est la définition de ta variable, ici c'est "Comme REFERENCE"


    Mais c'est l'éditeur VBA qui inscrit cela d'office !

    NumCol = Target.Column -> Là, je suis moins sûr... On affecte à la variable NumCol le numéro de la colonne où l'on se situe ? C'est bien ça ? Ca signifie alors que Target.Column est donc une fonction intégrée à VBA pour détecter la colonne active ? (J'ai pourtant averti que j'étais une quiche )
    En fait "Target" prends la référence de la cellule qui vient d'être modifiée, la propriété ".Columns" récupère le numéro de la colonne dans laquelle on se trouve à l'instant T

    Voilà

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Par défaut
    Impeccable !

    Il ne me reste plus qu'à passer le statut de ce topic en "Résolu" !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2007] Mise à jour par excel?
    Par lenovo49 dans le forum SharePoint
    Réponses: 9
    Dernier message: 02/11/2011, 19h06
  2. [WD] Détecte une mise à jour par programmation
    Par hegros dans le forum WinDev
    Réponses: 11
    Dernier message: 26/03/2007, 15h29
  3. [VBA-Excel]Mise à jour des liaisons powerpoint
    Par Mando dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2006, 22h51
  4. [VBA][EXCEL] Mise à jour de TCD en macro
    Par Scuriolus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/12/2005, 13h30
  5. Mise à jour par internet
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 29/10/2005, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo