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 :

Comparaison communs a 2 fichiers xlsm et déclenchement double clic


Sujet :

Macros et VBA Excel

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour eric
    non j'ai du réécrire les codes car je n'utilise pas le même PC et je n'ai pas la possibilité d'utiliser d'utiliser des zip ( cause politique de ma boite ).
    J'ai bien mis les 2 Dossiers dans le meme répertoire , mais toujours rien .

    Cependant j'ai du mal m'exprimer le fichier1xlsm en local sur mon PC doit se comparer au fichier2.xlsm (partagé en reseau) et lui cliquer dessus en colonne V si il y a des cellules communes avec le fichier1 .
    Je ne pourrais pas, de fait, avoir les 2 dossier dans le même répertoire.
    Merci encore

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour eric
    non j'ai du réécrire les codes car je n'utilise pas le même PC et je n'ai pas la possibilité d'utiliser d'utiliser des zip ( cause politique de ma boite ).
    J'ai bien mis les 2 Dossiers dans le meme répertoire , pour un test ,mais toujours rien .

    Cependant j'ai du mal m'exprimer le fichier1xlsm en local sur mon PC doit se comparer au fichier2.xlsm (partagé en reseau) et lui cliquer dessus en colonne V si il y a des cellules communes avec le fichier1 .


    Je ne pourrais pas, de fait, avoir les 2 dossier dans le même répertoire.
    Merci encore

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message
    Cependant j'ai du mal m'exprimer le fichier1xlsm en local sur mon PC doit se comparer au fichier2.xlsm (partagé en reseau) et lui cliquer dessus en colonne V si il y a des cellules communes avec le fichier1 .
    L'emplacement du fichier2 n'est pas le problème, il vous faut d'abord regarder comment les deux fichiers que je vous ai transmis fonctionnent entre eux.

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour,
    le double clic sur une cellule en colonne A du fichier1 .xlsm ouvre le fichier2.xlsm et met une erreur d'éxecution 438( propriété ou méthode non gérée par cet objet)
    L'erreur concerne ( en gras dans le code) cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If FichierOuvert(WbCible) = True Then WbCible.Close savechanges:=True
    .
    sur ce bug je bloque .

    Par contre elle remplit bien la colonne du fichier2.xlsm
    Y aurait il un moyen d'automatiser un déroulé de chaque cellule du fichier1.xlsm je pense a un code comme ceci par exemple ( ou avec des sendkeys)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Validation()
    Dim a As Range
    For Each a In Range("A1:A100").Cells
    a.Select
    SendKeys "{ENTER}", True
    Next
      End Sub
    Le double clic sur chaque cellule individuellement sur la colone A du fichier 1 n'étant pas essentiel , seule un comparaison entre les 2 fichiers et l'inscription en colonne V de fichier2 de ce qui est commun .

    Merci pour votre aide.

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message

    Ou avez vous mis la fonction FichierOuvert ?

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour, l
    a fonction Fichier ouvert est dans le module standard du fichier1.xlsm .

  7. #27
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message
    Modifiez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        If FichierOuvert(WbCible.Name) = True Then WbCible.Close savechanges:=True

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour eric

    c'est génial cela marche, mais il faut que le fichier2 soit ouvert sinon il ya une erreur de type 91 qui s'affiche .(Et peu importe que les 2 fichiers soient dans le même répertoire)

    Sur la gestion du parametre Fin j'ai mis en commentaire la ligne qui demande de fermer le fichier2 et j'ai mis une tempo de 1 Sec entre chaque clic via le code suivant car je souhaite voir les changement .Mais je ne sais pas si cela a bien sauvegardé les données actualisée du fichier 2 .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fin:
    If FichierOuvert(WbCible.Name)=True Then Application:Wait(Now+TimeSerial(0,0,1)) 
    'If FichierOuvert(WbCible.Name)=True Then WbCible.Close savechanges:True
    Set WbSource=Nothing: SetWbCible=Nothing
    Mon dernier problème se situe sur reproduire cette même macro sur un onglet qui va évoluer au gré des semaines écoulées .
    Plus précisement a chaque début de semaine
    • créer un onglet du N° de semaine au format YYWW ( ex:2115),
    • recreer ce tableau structuré ,celui du fichier1.xlsm
    • recréer la macro qui va actualiser le fichier 2.xlsm.


    Ce dernier ayant un template qui est collé pour afficher le meme format de tableau chaque semaine .L'onglet de ce fichier "cible" est au format YYWW et s'incrémente au fil du temps (ex:2115, 2116).
    En revanche dans ce fichier partagé ce template n'est pas architecturé en "tableau structuré".

    Merci pour votre aide .

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Bonjour eric
    Citation Envoyé par Eric KERGRESSE Voir le message
    Il vous faut seulement changer de nom à l'onglet 2114 dans le fichier 2 pour qu'il devienne "Semaine en cours". A vous de sauvegarder l'onglet chaque semaine (ou de créer une macro qui gère le changement). Pour les tableaux structurés, vous en créez 3 : 1 pour le nom, 1 pour la date, 1 pour le statut. Il faut simplement qu'ils aient le même nombre de lignes, la boucle I sera la même pour les 3.
    Je souhaite que cette macro suive l'onglet de la semaine courante du fichier1 et compare la meme semaine courante sur la cible ( le fichier2.xlsm)

    J'avais pensé a un code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub VerifOnglet()'programme principal
     Dim myArray As Variant, Nom as Variant 'déclaration des variables
     myArray = Array("2114", "2115", "2116", "2117") 'création d'une variable dite Array avec 2 valeurs
     For Each Nom In myArray 'boucle dans la variable Array
     If TestOnglet(Nom) = False Then 'Test appelant la fonction
        Sheets.Add after:= Sheets(Sheets.Count)'si le test n'est pas vérifié alors un nouvel onglet est créé en dernière position 
        ActiveSheet.Name = Nom  'le nouvel onglet prend le nom de la valeur testée 
     End If 'fin de la condition
     Next Nom 'appel de l'élément suivant de l'Array
     End Sub
     
     Function TestOnglet(Nom As Variant) As Boolean 'sous programme 
     On Error Resume Next 'désactive l'éventuel message d'erreur
     TestOnglet = Sheets(Nom).Name <> "" 'code du test
     On Error GoTo 0 'réactive le contrôle des erreurs
     End Function
    Pour vérifier et créer mes differents onglets si absent nommés au N° de semaine (format YYWW)

    ensuite pour déterminer le N° de semaine ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Semaine_en_cours()
    Dim prem_date as single
    Dim nb_date_année as integer
     
    nb_date_année=DateValue("1 Janvier"&(Year(Date)))
    prem_date=nb_date_année
    num_semaine=Abs(Date- prem_date)/7
    Range("A1").Value="21"&""& num_semaine
    End sub
    et enfin pour créer le tableau structuré dans l'onglet de la semaine courante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub créeTableaustructuré()
    Sheets("2115").ListObjects.Add(xlSrcRange,Range("A1:A100"), , xlYes).Name ="T_Nom"
    Sheets("2115").ListObjects.Add(xlSrcRange,Range("b1:A100"), , xlYes).Name ="T_Maj fichier 2"
    Sheets("2115").ListObjects("T_Nom").TableStyle="TableStyleMedium14"
    Sheets("2115").ListObjects("T_Maj fichier2").TableStyle="TableStyleMedium14"
     
    End sub

    Peux etre dois je transformer le module standard pour trouver la semaine en cours en fonction ( function semaine en cours).
    Ensuite je pense qu'il faut agir sur la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myArray = Array("2114", "2115", "2116", "2117")
    afin de l'incrémenter proportionnellement au numéro de semaine et non pas ecrire toutes les semaines de l'année dans l'array
    Et aprés créer le tableau structuré sur l'onglet de la semaine courante.
    la je pense qu'il faut agir sur la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("N° semaine courante")
    Mais je n'arrive pas a les lier entre eux .

    Merci encore .

  10. #30
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message
    Bonjour,

    Je m'y perds un peu...

    Pour le fichier 2, le code fourni en #15 et dans le fichier 1 en #10, s'affranchit des tableaux structurés pour le fichier 2 puisqu'apparemment, tu n'avais pas la main dessus.
    La question est de savoir comment doit se faire le traitement. Actuellement, la mise à jour se faire par l'événement double-clic sur chacune de la première colonne d'un onglet semaine. Il vaudrait mieux réaliser un traitement de masse en créant deux boucles imbriquées pour tout mettre à jour d'un coup.

    Il faudrait plutôt ajouter un onglet Menu qui contiendra :

    - une table des onglets semaines qu'on doit retrouver les 2 fichiers : TableauDesOnglets, titre : Liste des semaines
    - une cellule correspondant à la zone nommée "SemaineChoisie", asservie à la table dans laquelle la liste validation correspond à cette formule : =INDIRECT("TableauDesOnglets[Liste des semaines]")
    - un bouton pour lancer la macro contenant le code suivant, sachant que la semaine choisie est la même pour les deux fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub BoutonLancer_Click()
     
         MettreAJourLeFichier2 Range("SemaineChoisie")
     
    End Sub
    - Modifier la procédure MettreAJourLeFichier2 pour pointer sur le bon onglet du fichier 1 et traiter en masse.

    Pièce jointe 595798

  11. #31
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,
    Il faudrait plutôt ajouter un onglet Menu qui contiendra :
    - une table des onglets semaines qu'on doit retrouver les 2 fichiers : TableauDesOnglets, titre : Liste des semaines
    - une cellule correspondant à la zone nommée "SemaineChoisie", asservie à la table dans laquelle la liste validation correspond à cette formule : =INDIRECT("TableauDesOnglets[Liste des semaines]")
    - un bouton pour lancer la macro contenant le code suivant, sachant que la semaine choisie est la même pour les deux fichiers.
    - Modifier la procédure MettreAJourLeFichier2 pour pointer sur le bon onglet du fichier 1 et traiter en masse.

    Pièce jointe 595798
    Bonjour eric
    chapeau je n'y avais pas pensé.effectivement le double clic allourdit la chose et je n'ai toujours pas la main sur le fichier2

    J'ai donc rajouté et nommé "Menu" un onglet du fichier1.xlsm sur celui ci

    En B1 j'ai tapé la formule suivante =INDIRECT("TableauDesOnglets[Liste des semaines]")

    La j'ai une erreur #REF!

    en C1 et D1 j'ai mis un controleActiveX CommandButton que j'ai renommé "Lancer la procedure". sur celui ci Via le clic droit il y a le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    MettreAJourLeFichier2 Range("B1")
    End Sub
    En E1 J'ai mis un tableau structuré nommé T_TableauDesOnglets pour tous le tableau( champ d'en tete compris)et dont les valeurs sont nommées Listedessemaines .
    Au passage j'ai respecté la syntaxe des tableaux structuré du tuto de Pierre Fauconnier . ( Merci a lui ) .

    Je présume qu'il faut modifier la partie de code .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With WbCible 
    For I=To Sheets.Count
    If .Sheets(I).Name=NomOnglet2 Then 
    Set ShCible=.Sheets(I)
    Continuer=True
    Exit For
    End if
    Next I
    dois je utiliser quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(j).Select 
     Sheets(j).Activate
    avec j etant egal la cellule B1


    J'avoue je sèche

    Merci

  12. #32
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message
    Si ton tableau s'appelle T_TableauDesOnglets et que le cellule de titre s'appelle Liste des semaines,
    en B1 la formule pour ta liste déroulante doit être =INDIRECT("T_TableauDesOnglets[Liste des semaines]")

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2010
    Messages : 61
    Points : 29
    Points
    29
    Par défaut [XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
    Citation Envoyé par Eric KERGRESSE Voir le message
    Si ton tableau s'appelle T_TableauDesOnglets et que le cellule de titre s'appelle Liste des semaines,
    en B1 la formule pour ta liste déroulante doit être =INDIRECT("T_TableauDesOnglets[Liste des semaines]")
    c'est ce que j'ai tapé en B1 mais j'ai une erreur #REF et je ne comprends pas .
    J'ai essayé aussi Données/Validation des données dans autoriser j'ai mis liste et dans la source j'ai mis =INDIRECT("T_TableauDesOnglets[Listedessemaines]")
    Mais la source est reconnue comme erronée

    En marge de cela
    Dans un module standard j'ai mis ce code pour ,dans le tableau structuré ,placer des liens hypertexte qui atteignent ainsi les differents onglets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub WorkSheet_Activate()
    Dim i As Integer
    Range ( "E" & i).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection,Address:="", _
    SubAddress:="'"&Worksheets(i).Name&"'!A1",_TextToDisplay:=Worksheets(i).Name
    Next
    End sub
    Le problème sera des poursuivre ces liens hypertextes car les tableaux structurés n'étendent pas ces liens quand on rajoute une nouvelle entrée ou ligne.
    Je précise je teste et ce n'est pas prioritaire

    Qu'entends tu par Il vaudrait mieux réaliser un traitement de masse en créant deux boucles imbriquées pour tout mettre à jour d'un coup?

  14. #34
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tepuy Voir le message
    Qu'entends tu par Il vaudrait mieux réaliser un traitement de masse en créant deux boucles imbriquées pour tout mettre à jour d'un coup?
    Au lieu de traiter cellule par cellule avec double clic, on traite d'un coup l'ensemble des données de l'onglet. Pour cela, il faut ajouter une boucle sur les données à traiter et à l'intérieur de cette boucle aller chercher les données du fichier 2 comme actuellement.

Discussions similaires

  1. Comparaison de valeurs communes dans des fichiers
    Par GlmGil dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 26/03/2021, 21h59
  2. Ouvrir un fichier Excel en un double-clic
    Par Mickamax dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/05/2019, 12h46
  3. Ouvrir un fichier avec Eclipse par double clics
    Par omsi02 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 14/04/2010, 19h21
  4. Comparaison de version de fichier
    Par drkns dans le forum C++
    Réponses: 3
    Dernier message: 27/07/2006, 14h49
  5. [VB.NET] Ouvrir fichier dans appli par double-clic dessus
    Par vynce dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2005, 17h43

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