Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 14h25   #1
Invité de passage
 
Homme
Ingénieur commercial
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur commercial
Secteur : Distribution

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Excel 2003 VBA

Bonjour, je vous explique ma situation assez compliquée.

Je remplace un collègue ayant quitté ses fonctions. Il utilisait un fichier de suivi des demandes entrantes. J'ai du reprendre son fichier. Celui-ci utilisait une macro excel mais malheureusement je ne connais pas du tout le vba.
Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit
Dim val As Variant, lig As Long
 
Private Sub Worksheet_Change(ByVal sel As Range)
If sel.CountLarge = 1 Then
    If val <> "" Then
        With Sheets("suivi")
            lig = .Cells(Columns(1).Rows.Count, 1).End(xlUp).Row + 1
            Rows(sel.Row).Copy Destination:=.Rows(lig)
            .Cells(lig, sel.Column).Value = val
            .Cells(lig, sel.Column).Interior.Color = 10092441
            .Cells(lig, 4).Value = Date
        End With
    End If
End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal sel As Range)
If sel.CountLarge = 1 Then
    val = sel.Value
End If
End Sub
Voici mon onglet de base
http://imageshack.us/photo/my-images/87/basevl.png

Voici mon onglet de suivi
http://imageshack.us/photo/my-images/191/suivi.png

Actuellement toute modification dans les colonne Id, Mois ou date crée un log qui s'enregistre dans l'onglet de suivi.

Par exemple pour la ligne 21, si l'on modifie le champ correspondant au mois et que l'on met décembre à la place d'octobre, une ligne est automatiquement créée dans l'onglet de suivi reprenant la ligne que l'on vient de modifier avec ses valeurs précédentes (ici la ligne sera recopiée et dans le champ correspondant au mois sera inscrit octobre). Cela permet de suivre toute les modifications effectuées sur l'onglet de base.

Mon problème est le suivant :
Une seule modification par ligne est possible actuellement et est suivie dans l'onglet "suivi". Par exemple si lors d'une modification je change l'Id et le mois, seul l'un des deux va être reporté dans l'onglet de suivi et l'autre restera inchangé.

Je ne sais pas comment rajouter des colonnes qui vont être suivies.
J'aimerais bien rajouter dans l'onglet "base" un nombre n de colonnes et en cas de modification dans ces colonnes, avoir également un reporting suivant le même principe.

Merci de votre aide !
uzinagaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h05   #2
Membre éclairé
 
Avatar de tototiti2008
 
Inscription : octobre 2008
Messages : 327
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 327
Points : 320
Points : 320
Bonjour uzinagaz (ça promet ),

Chez moi (excel 2003 aussi), la propriété CountLarge n'existe pas, donc j'ai du remplacer
CountLarge par Count dans le code

Après ça, ça fonctionne : chaque modification, quelle que soit sa colonne, est reportée dans l'autre feuille, même si je change plusieurs valeurs de la même ligne
Le seul cas qui n'est pas pris en compte c'est quand on remplit une cellule qui était vide
__________________
tototiti2008 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h18   #3
Membre confirmé
 
Inscription : juillet 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 209
Points : 219
Points : 219
Bonjour,

Pour prendre en compte les évolutions , il faut examiner le code actuel.
A chaque fois que l'on se déplace dans une cellule , on sauvegarde sa valeur ( et sa colonne ).
Ensuite à chaque modification du feuillet , on recopie la ligne et on recopie la valeur sauvegardée.

Actuellement , si l'on change successivement 2 cellules d'une même ligne , il y aura 2 lignes différentes dans l'onglet suivi.
Avec le code actuel , on ne peut pas générer qu'une seule ligne.

Il y a contradiction avec le fonctionnement que tu décris :
Une seule modification par ligne est possible actuellement et est suivie dans l'onglet "suivi". Par exemple si lors d'une modification je change l'Id et le mois, seul l'un des deux va être reporté dans l'onglet de suivi et l'autre restera inchangé.

je pense que tu n'a détecté dans Excel, le mode insertion( mode ou l'on modifie la valeur et qui s'acheve par 'enter' ).

PS : avec ma version 2003 , la ligne suivante affiche une erreur
Code :
1
2
 
If sel.CountLarge = 1
j'ai remplacé par
Code :
1
2
 
If selection.Count = 1
CodeFacile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h23   #4
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut, concernant CountLarge lire ceci http://www.developpez.net/forums/d10...2007-suivants/
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 15h50   #5
Invité de passage
 
Homme
Ingénieur commercial
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur commercial
Secteur : Distribution

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Merci beaucoup ! Ca fonctionne nickel

J'ai juste un dernier problème..

Je ne sais pas si vous avez remarqué mais sur mon fichier nommé "suivi" s'affiche également la date de modification (la date à laquelle on a effectué une modif sur l'onglet "base" donc)

Le problème est le suivant :

Si sur le fichier "base" je crée une colonne par exemple "Description" celle-ci est placée en colonne 4.

Or sur le fichier de suivi la colonne 4 est la colonne où est affichée la date de modification !

Toute mes modifs sur la colonne "Description" ne sont donc pas visibles car le programme reporte dans cette colonne la date de modification et non la description.

Voici mon fichier base :

http://imageshack.us/photo/my-images/844/baseer.jpg/

Voici mon fichier de suivi :

http://imageshack.us/photo/my-images/822/suivi.jpg/

Le détail est sur les screenshots si je vous ai embrouillé

Merci encore ! Vous me sauvez !
uzinagaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h35.


 
 
 
 
Partenaires

Hébergement Web