[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
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
[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:
If FichierOuvert(WbCible) = True Then WbCible.Close savechanges:=True
.
sur ce bug je bloque .
Par contre elle remplit bien la colonne du fichier2.xlsm :D
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:
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.
[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 .
[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:
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 .
[XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
Bonjour eric
Citation:
Envoyé par
Eric KERGRESSE
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:
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:
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:
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:
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:
Sheets("N° semaine courante")
Mais je n'arrive pas a les lier entre eux .
Merci encore .
[XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
Citation:
Envoyé par
Eric KERGRESSE
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:
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:
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:
1 2
| Sheets(j).Select
Sheets(j).Activate |
avec j etant egal la cellule B1
J'avoue je sèche
Merci
[XL-2010] Comparaison communs a 2 fichiers xlsm et déclenchement double clic
Citation:
Envoyé par
Eric KERGRESSE
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:
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?