Rechercher première ligne vide d'un fichier et ecrire
Résolu/Fermé
Baloo24700
Messages postés
14
Date d'inscription
mardi 9 avril 2013
Statut
Membre
Dernière intervention
31 mars 2015
-
11 avril 2013 à 09:35
baloo24 - 22 mai 2013 à 13:26
baloo24 - 22 mai 2013 à 13:26
A voir également:
- Rechercher première ligne vide d'un fichier et ecrire
- Rechercher ou entrer l'adresse - Guide
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
43 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
17 avril 2013 à 10:31
17 avril 2013 à 10:31
Bonjour,
Ci dessous mon code du jour, avec tous les commentaires...
A tester.....
Ci dessous mon code du jour, avec tous les commentaires...
A tester.....
Sub exporter() Dim FichierA As Workbook, FichierB As Workbook, drLign As Long, Tb(), i As Integer Dim StrToCompare As String, Lig As Long, TablDonnees(), TablAComparer(), j As Byte, p As Integer 'Détermination du fichier source des données (on l'appelle FichierA) Set FichierA = ThisWorkbook 'Stockage des données à exporter, dans une variable tableau Tb = FichierA.Sheets("Prospect").Range("AN7:BG7").Value 'On créé une variable de type String qui concatène les données à comparer '-- Ici comme on ne veux que les 4 premières valeurs, on boucle de 1 à 4... 'on aurait pu remplacer cette ligne par : StrToCompare = Tb(1, 1) & Tb(1, 2) & Tb(1, 3) & Tb(1, 4) 'Mais c'est plus "évolutif" par une boucle For i = 1 To 4 StrToCompare = StrToCompare & Tb(1, i) ' A COMPARER Next i 'TEST si le classeur Opérations.xlsx est ouvert, si non l'ouvre 'sources [Ouskel'n'or]: https://www.developpez.net/forums/d98510/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-tester-fichier-deja-ouvert/#post691146 On Error Resume Next Workbooks("Opérations.xlsx").Activate If Err <> 0 Then Set FichierB = Workbooks.Open("Y:/Partage/Opérations/Opérations.xslx") Else Set FichierB = Workbooks("Opérations.xlsx") End If On Error GoTo 0 'Avec le Classeur FichierB que l'on vient d'activer With FichierB 'Dans la feuille patrimoine With .Sheets("Patrimoine") 'on stocke le num de la première ligne vide colonne B drLign = .Range("B" & Rows.Count).End(xlUp).Row + 1 'on stocke les valeurs contenues dans les 4 premières colonnes jusqu'à la dernière ligne 'pour pouvoir les comparer cf ci-dessus "A COMPARER" TablDonnees = .Range("B1:E" & drLign - 1).Value 'Concaténation de ces données dans une variable tableau For i = LBound(TablDonnees, 1) To UBound(TablDonnees, 1) ReDim Preserve TablAComparer(i) For j = 1 To 4 TablAComparer(i) = TablAComparer(i) & TablDonnees(i, j) Next j Next i 'Application.Match renvoie une erreur si les valeurs ne sont pas trouvées On Error Resume Next p = Application.Match(StrToCompare, TablAComparer, 0) 'donc on traite l'erreur, 'si pas trouvé alors If Err <> 0 Then 'on les inscrit en dernières lignes .Range("B" & drLign).Resize(1, UBound(Tb, 2)) = Tb Else 'sinon 'on indique à l'utilisateur à qu'elle ligne il peut les trouver...... MsgBox "Ces données ont déjà été importées, cf ligne : " & p - 1 End If On Error GoTo 0 End With End With End Sub
Bonjour ! Là c'est du lourd .... Merci, je teste et vous dit ! Bonne journée et encore merci !
JPierre
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
Modifié par pijaku le 17/04/2013 à 10:59
Modifié par pijaku le 17/04/2013 à 10:59
C'est un poil plus complexe que ne le laisse envisager le titre de ce sujet : "Rechercher première ligne vide d'un fichier et ecrire", mais ça reste très abordable... Avec un peu d'habitude.
Merci ! Merci ! ça fonctionne à merveille ! Bravo Ô Maitre VBA !
JPierre
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
17 avril 2013 à 11:24
17 avril 2013 à 11:24
De rien, et oh non je ne suis pas "maître VBA".
N'hésite pas.
A+
N'hésite pas.
A+
Si ! Si! J'y tiens ! Je me permettrai bien une dernière requête si vous me le permettez....
La colonne A du fichier "Opérations.xlsx" feuille "Patrimoine" contient des codes. J'aimerai afin de simplifier la tâche des utilisateurs, rapatrier le code de la ligne qu'on vient d'écrire sur Opérations à travers votre macro dans la cellule K6 d'"Erola-6.xlsm" feuille "Prospect"
En résumé, votre macro inscrit sur la première ligne vide du tableau "Opérations" feuille "Patrimoine" à partir de la colonne B. Sur cette même ligne, colonne A, j'ai un code automatique que j'aimerai rapatrier dans "Erola-6" cellule K6 !
Pouvez-vous (encore) m'aider svp ? Merci d'avance,
Vous êtes dans quelle région d'ailleurs ?
JPierre
La colonne A du fichier "Opérations.xlsx" feuille "Patrimoine" contient des codes. J'aimerai afin de simplifier la tâche des utilisateurs, rapatrier le code de la ligne qu'on vient d'écrire sur Opérations à travers votre macro dans la cellule K6 d'"Erola-6.xlsm" feuille "Prospect"
En résumé, votre macro inscrit sur la première ligne vide du tableau "Opérations" feuille "Patrimoine" à partir de la colonne B. Sur cette même ligne, colonne A, j'ai un code automatique que j'aimerai rapatrier dans "Erola-6" cellule K6 !
Pouvez-vous (encore) m'aider svp ? Merci d'avance,
Vous êtes dans quelle région d'ailleurs ?
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
17 avril 2013 à 12:43
17 avril 2013 à 12:43
Et après.......
Mi j'sus du 6-2, mais actuellement, je suis sur Lille.
Voici le code modifié, non testé. En gras les modifs.
Mi j'sus du 6-2, mais actuellement, je suis sur Lille.
Voici le code modifié, non testé. En gras les modifs.
Sub exporter() Dim FichierA As Workbook, FichierB As Workbook, drLign As Long, Tb(), i As Integer Dim StrToCompare As String, Lig As Long, TablDonnees(), TablAComparer(), j As Byte, p As Integer, Codauto As String 'Détermination du fichier source des données (on l'appelle FichierA) Set FichierA = ThisWorkbook 'Stockage des données à exporter, dans une variable tableau Tb = FichierA.Sheets("Prospect").Range("AN7:BG7").Value 'On créé une variable de type String qui concatène les données à comparer '-- Ici comme on ne veux que les 4 premières valeurs, on boucle de 1 à 4... 'on aurait pu remplacer cette ligne par : StrToCompare = Tb(1, 1) & Tb(1, 2) & Tb(1, 3) & Tb(1, 4) 'Mais c'est plus "évolutif" par une boucle For i = 1 To 4 StrToCompare = StrToCompare & Tb(1, i) ' A COMPARER Next i 'TEST si le classeur Opérations.xlsx est ouvert, si non l'ouvre 'sources [Ouskel'n'or]: https://www.developpez.net/forums/d98510/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-tester-fichier-deja-ouvert/#post691146 On Error Resume Next Workbooks("Opérations.xlsx").Activate If Err <> 0 Then Set FichierB = Workbooks.Open("Y:/Partage/Opérations/Opérations.xslx") Else Set FichierB = Workbooks("Opérations.xlsx") End If On Error GoTo 0 'Avec le Classeur FichierB que l'on vient d'activer With FichierB 'Dans la feuille patrimoine With .Sheets("Patrimoine") 'on stocke le num de la première ligne vide colonne B drLign = .Range("B" & Rows.Count).End(xlUp).Row + 1 'on stocke les valeurs contenues dans les 4 premières colonnes jusqu'à la dernière ligne 'pour pouvoir les comparer cf ci-dessus "A COMPARER" TablDonnees = .Range("B1:E" & drLign - 1).Value 'Concaténation de ces données dans une variable tableau For i = LBound(TablDonnees, 1) To UBound(TablDonnees, 1) ReDim Preserve TablAComparer(i) For j = 1 To 4 TablAComparer(i) = TablAComparer(i) & TablDonnees(i, j) Next j Next i 'Application.Match renvoie une erreur si les valeurs ne sont pas trouvées On Error Resume Next p = Application.Match(StrToCompare, TablAComparer, 0) 'donc on traite l'erreur, 'si pas trouvé alors If Err <> 0 Then 'on les inscrit en dernières lignes .Range("B" & drLign).Resize(1, UBound(Tb, 2)) = Tb Else 'sinon 'on indique à l'utilisateur à qu'elle ligne il peut les trouver...... MsgBox "Ces données ont déjà été importées, cf ligne : " & p - 1 End If On Error GoTo 0 Codauto = .Range("A" & drLign).Value End With End With With FichierA.Sheets("Prospect") ' A ADAPTER tu ne m'as pas indiqué la feuille .Range("K6") = Codauto End With End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pas compris le "A Adapter tu ne m'as pas indiqué la feuille". Je veux copier la cellule (A; ligne qu'on vient d'écrire) dans Opérations.xlsx feuille "patrimoine" dans "Erola-6.Xlsm" feuille "Prospect" cellule K6.
Voilà ... Où dois-je rajouter le nom de feuille ? Merci !
"With FichierA.Sheets("Prospect") ' A ADAPTER tu ne m'as pas indiqué la feuille
.Range("K6") = Codauto"
Voilà ... Où dois-je rajouter le nom de feuille ? Merci !
"With FichierA.Sheets("Prospect") ' A ADAPTER tu ne m'as pas indiqué la feuille
.Range("K6") = Codauto"
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
Modifié par pijaku le 17/04/2013 à 13:22
Modifié par pijaku le 17/04/2013 à 13:22
Ben il y est... J'ai juste mis A ADAPTER au cas ou ça ne serait pas dans cette feuille là.
En fait, je n'avais pas vu que tu me l'indiquais...
Donc laisse comme ça. Le code est bon
En fait, je n'avais pas vu que tu me l'indiquais...
Donc laisse comme ça. Le code est bon
Oui .... Maître mais cela ne marche pas ... Je n'ai rien en K6 dans Erola feuille prospect ... Voilà le code :
Sub exporter()
Dim FichierA As Workbook, FichierB As Workbook, drLign As Long, Tb(), i As Integer
Dim StrToCompare As String, Lig As Long, TablDonnees(), TablAComparer(), j As Byte, p As Integer, Codauto As String
'Détermination du fichier source des données (on l'appelle FichierA)
Set FichierA = ThisWorkbook
'Stockage des données à exporter, dans une variable tableau
Tb = FichierA.Sheets("Prospect").Range("AN7:BG7").Value
'On créé une variable de type String qui concatène les données à comparer
'-- Ici comme on ne veux que les 4 premières valeurs, on boucle de 1 à 4...
'on aurait pu remplacer cette ligne par : StrToCompare = Tb(1, 1) & Tb(1, 2) & Tb(1, 3) & Tb(1, 4)
'Mais c'est plus "évolutif" par une boucle
For i = 1 To 4
StrToCompare = StrToCompare & Tb(1, i) ' A COMPARER
Next i
'TEST si le classeur Opérations.xlsx est ouvert, si non l'ouvre
'sources [Ouskel'n'or]: http://www.developpez.net/forums/showpost.php?p=691146&postcount=12
On Error Resume Next
Workbooks("Opérations.xlsx").Activate
If Err <> 0 Then
Set FichierB = Workbooks.Open("X:\EROLA\Opérations.xlsx")
Else
Set FichierB = Workbooks("Opérations.xlsx")
End If
On Error GoTo 0
'Avec le Classeur FichierB que l'on vient d'activer
With FichierB
'Dans la feuille patrimoine
With .Sheets("Patrimoine")
'on stocke le num de la première ligne vide colonne B
drLign = .Range("B" & Rows.Count).End(xlUp).Row + 1
'on stocke les valeurs contenues dans les 4 premières colonnes jusqu'à la dernière ligne
'pour pouvoir les comparer cf ci-dessus "A COMPARER"
TablDonnees = .Range("B1:E" & drLign - 1).Value
'Concaténation de ces données dans une variable tableau
For i = LBound(TablDonnees, 1) To UBound(TablDonnees, 1)
ReDim Preserve TablAComparer(i)
For j = 1 To 4
TablAComparer(i) = TablAComparer(i) & TablDonnees(i, j)
Next j
Next i
'Application.Match renvoie une erreur si les valeurs ne sont pas trouvées
On Error Resume Next
p = Application.Match(StrToCompare, TablAComparer, 0)
'donc on traite l'erreur,
'si pas trouvé alors
If Err <> 0 Then
'on les inscrit en dernières lignes
.Range("B" & drLign).Resize(1, UBound(Tb, 2)) = Tb
Else 'sinon
'on indique à l'utilisateur à qu'elle ligne il peut les trouver......
MsgBox "Ces données ont déjà été importées, cf ligne : " & p - 1
End If
On Error GoTo 0
Codauto = .Range("A" & drLign).Value
End With
End With
With FichierA.Sheets("Prospect").Range("K6") = Codauto
End With
End Sub
Sub exporter()
Dim FichierA As Workbook, FichierB As Workbook, drLign As Long, Tb(), i As Integer
Dim StrToCompare As String, Lig As Long, TablDonnees(), TablAComparer(), j As Byte, p As Integer, Codauto As String
'Détermination du fichier source des données (on l'appelle FichierA)
Set FichierA = ThisWorkbook
'Stockage des données à exporter, dans une variable tableau
Tb = FichierA.Sheets("Prospect").Range("AN7:BG7").Value
'On créé une variable de type String qui concatène les données à comparer
'-- Ici comme on ne veux que les 4 premières valeurs, on boucle de 1 à 4...
'on aurait pu remplacer cette ligne par : StrToCompare = Tb(1, 1) & Tb(1, 2) & Tb(1, 3) & Tb(1, 4)
'Mais c'est plus "évolutif" par une boucle
For i = 1 To 4
StrToCompare = StrToCompare & Tb(1, i) ' A COMPARER
Next i
'TEST si le classeur Opérations.xlsx est ouvert, si non l'ouvre
'sources [Ouskel'n'or]: http://www.developpez.net/forums/showpost.php?p=691146&postcount=12
On Error Resume Next
Workbooks("Opérations.xlsx").Activate
If Err <> 0 Then
Set FichierB = Workbooks.Open("X:\EROLA\Opérations.xlsx")
Else
Set FichierB = Workbooks("Opérations.xlsx")
End If
On Error GoTo 0
'Avec le Classeur FichierB que l'on vient d'activer
With FichierB
'Dans la feuille patrimoine
With .Sheets("Patrimoine")
'on stocke le num de la première ligne vide colonne B
drLign = .Range("B" & Rows.Count).End(xlUp).Row + 1
'on stocke les valeurs contenues dans les 4 premières colonnes jusqu'à la dernière ligne
'pour pouvoir les comparer cf ci-dessus "A COMPARER"
TablDonnees = .Range("B1:E" & drLign - 1).Value
'Concaténation de ces données dans une variable tableau
For i = LBound(TablDonnees, 1) To UBound(TablDonnees, 1)
ReDim Preserve TablAComparer(i)
For j = 1 To 4
TablAComparer(i) = TablAComparer(i) & TablDonnees(i, j)
Next j
Next i
'Application.Match renvoie une erreur si les valeurs ne sont pas trouvées
On Error Resume Next
p = Application.Match(StrToCompare, TablAComparer, 0)
'donc on traite l'erreur,
'si pas trouvé alors
If Err <> 0 Then
'on les inscrit en dernières lignes
.Range("B" & drLign).Resize(1, UBound(Tb, 2)) = Tb
Else 'sinon
'on indique à l'utilisateur à qu'elle ligne il peut les trouver......
MsgBox "Ces données ont déjà été importées, cf ligne : " & p - 1
End If
On Error GoTo 0
Codauto = .Range("A" & drLign).Value
End With
End With
With FichierA.Sheets("Prospect").Range("K6") = Codauto
End With
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
17 avril 2013 à 13:42
17 avril 2013 à 13:42
arrête avec "maître" sinon j'm'en vais...
remplace :
par
Mais est ce que Codauto est bien rempli??????
Pour cela vérifions d'abord en ajoutant un message :
Comment est complété le code automatique en cellule "A" dernière ligne?????
S'il n'y a rien au moment du copié collé, il n'y aura rien en K6...
remplace :
With FichierA.Sheets("Prospect").Range("K6") = Codauto End With
par
With FichierA.Sheets("Prospect") .Range("K6") = Codauto End With
Mais est ce que Codauto est bien rempli??????
Pour cela vérifions d'abord en ajoutant un message :
With FichierA.Sheets("Prospect") MsgBox Codauto .Range("K6") = Codauto End With
Comment est complété le code automatique en cellule "A" dernière ligne?????
S'il n'y a rien au moment du copié collé, il n'y aura rien en K6...
Merci de vos remarques pertinentes. Codeauto dans "Opérations.xslx" s'incrémente automatiquement suivant un critère :
si la case commune (colonne Dx) est<>"" alors = Ax+1. Donc je ne pense pas avoir de problème là-dessus ...
Par contre, je risque d'avoir d'autres soucis différents ... Je me permettrai de vous solliciter comme proposé ! Je vous tiens au courant !
si la case commune (colonne Dx) est<>"" alors = Ax+1. Donc je ne pense pas avoir de problème là-dessus ...
Par contre, je risque d'avoir d'autres soucis différents ... Je me permettrai de vous solliciter comme proposé ! Je vous tiens au courant !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
17 avril 2013 à 15:45
17 avril 2013 à 15:45
Est ce que cela fonctionne??? ou pas...
Sinon, pas de souci, je suis à l'écoute.
Sinon, pas de souci, je suis à l'écoute.
Oui Franck ! Tout marche bien pour l'instant ... Je suis en train de développer une autre partie de ce fichier et n'hésiterai à vous contacter si ... Merci pour tout ! Et à très vite je pense ... Bien cordialement!
Bon ben ça n'a pas trainé .... Bien alors je vais essayer d'être plus sérieux dans l'approche de ma problématique :
a) J'ai le fichier "Erola-6.xlsm",
b) J'ai le fichier "Opérations.xlsx"
vous connaissez déjà
Mon fichier Erola - créé un répertoire du nom de mon opération, (ex: 323-Lille)
- enregistre dans ce répertoire sous le nom de mon opération (ex:323-Lille.xlsm).
J'ai un autre fichier très lourd en formules appelé Calcoto qui vient chercher des infos de ex:323-Lille.xlsm, les triturer pour fournir différentes infos.
a) J'ai le fichier "Erola-6.xlsm",
b) J'ai le fichier "Opérations.xlsx"
vous connaissez déjà
Mon fichier Erola - créé un répertoire du nom de mon opération, (ex: 323-Lille)
- enregistre dans ce répertoire sous le nom de mon opération (ex:323-Lille.xlsm).
J'ai un autre fichier très lourd en formules appelé Calcoto qui vient chercher des infos de ex:323-Lille.xlsm, les triturer pour fournir différentes infos.
Bonjour, je reprends mon message d'hier soir envoyé malgré son manque de fin car interrompu par l'arrivée d'une réunion inopinée désole ...
"Bon ben ça n'a pas trainé .... Bien alors je vais essayer d'être plus sérieux dans l'approche de ma problématique :
a) J'ai le fichier "Erola-6.xlsm",
b) J'ai le fichier "Opérations.xlsx"
vous connaissez déjà
Mon fichier Erola
- créé un répertoire du nom de mon opération, (ex: 323-Lille) à travers le chemin : W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola
- enregistre Erola dans ce répertoire sous le nom de mon opération (ex:323-Lille.xlsm).
J'ai un autre fichier très lourd en formules appelé Calcoto qui vient chercher des infos d'Erola maintenant appellé 323-Lille.xlsm, les triturer pour fournir différentes infos." Ca c'était hier donc je continue ...
La fonction indirect() doit me permettre d'aller chercher les infos non plus dans Erola mais 323-Lille
J'aimerai pouvoir conserver en automatique Calcoto sous le nom "323-Lille Calcoto" en pdf et ce dans le répertoire "323-Lille" que j'ai créé à travers l'utilisation d'Erola-6.
J'ai compris (du moins je crois ...) que travailler en direct n'était pas possible, donc à l'ouverture de Calcoto que je lance depuis Erola, je créé un fichier intermédiaire dans lequel j'enregistre en cellule A1 l'info 323-Lille.
Quand calcoto s'ouvre, il récupère l'info 323-Lille et grâce à la fonction indirect() il va récupérer les infos dans 323-Lille.xslm. Maintenant j'aimerai enregistrer Calcoto sous "323-Lille-Calcoto-date.pdf"
Savez vous comment faire d'avance merci !
JPierre
"Bon ben ça n'a pas trainé .... Bien alors je vais essayer d'être plus sérieux dans l'approche de ma problématique :
a) J'ai le fichier "Erola-6.xlsm",
b) J'ai le fichier "Opérations.xlsx"
vous connaissez déjà
Mon fichier Erola
- créé un répertoire du nom de mon opération, (ex: 323-Lille) à travers le chemin : W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola
- enregistre Erola dans ce répertoire sous le nom de mon opération (ex:323-Lille.xlsm).
J'ai un autre fichier très lourd en formules appelé Calcoto qui vient chercher des infos d'Erola maintenant appellé 323-Lille.xlsm, les triturer pour fournir différentes infos." Ca c'était hier donc je continue ...
La fonction indirect() doit me permettre d'aller chercher les infos non plus dans Erola mais 323-Lille
J'aimerai pouvoir conserver en automatique Calcoto sous le nom "323-Lille Calcoto" en pdf et ce dans le répertoire "323-Lille" que j'ai créé à travers l'utilisation d'Erola-6.
J'ai compris (du moins je crois ...) que travailler en direct n'était pas possible, donc à l'ouverture de Calcoto que je lance depuis Erola, je créé un fichier intermédiaire dans lequel j'enregistre en cellule A1 l'info 323-Lille.
Quand calcoto s'ouvre, il récupère l'info 323-Lille et grâce à la fonction indirect() il va récupérer les infos dans 323-Lille.xslm. Maintenant j'aimerai enregistrer Calcoto sous "323-Lille-Calcoto-date.pdf"
Savez vous comment faire d'avance merci !
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 09:49
18 avril 2013 à 09:49
Bonjour,
Si tu disposes d'Excel >= 2007, et que ta question est bien :
Maintenant j'aimerai enregistrer Calcoto sous "323-Lille-Calcoto-date.pdf"
Voici la réponse :
- Fichier
- Enregistrer sous
- nom de fichier : 323-Lille-Calcoto-date
- type : choisir pdf
Si tu disposes d'Excel >= 2007, et que ta question est bien :
Maintenant j'aimerai enregistrer Calcoto sous "323-Lille-Calcoto-date.pdf"
Voici la réponse :
- Fichier
- Enregistrer sous
- nom de fichier : 323-Lille-Calcoto-date
- type : choisir pdf
Oui Pijaku, j'ai bien excel2007 mais vous comprenez que je préfère travailler par macro car sinon je vais avoir une définition de noms de fichier aléatoire car je ne suis pas seul à bosser sur ce fichier ... C'est pourquoi je me permettais de vous solliciter ! Merci d'avance,
JPierre
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 10:27
18 avril 2013 à 10:27
Alors quand souhaites tu enregistrer automatiquement ce fichier en pdf? A la fin d'une macro? Si oui, passe nous le code.
Lorsque l'utilisateur cliques sur un bouton? Quand il ferme le classeur? Quand il change de feuille?
Quand, comment, etc... veux tu que se lance ta procédure d'enregistrement en pdf.
Lorsque l'utilisateur cliques sur un bouton? Quand il ferme le classeur? Quand il change de feuille?
Quand, comment, etc... veux tu que se lance ta procédure d'enregistrement en pdf.
Quand l'utilisateur ferme le classeur en cliquant sur un bouton svp ... Merci !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 10:55
18 avril 2013 à 10:55
Je suppose que tu sauras comment récupérer les informations permettant de trouver le nom du répertoire et le nom du fichier...
Donc le code du bouton (à insérer dans la feuille que tu souhaites exporter en pdf) est :
Donc le code du bouton (à insérer dans la feuille que tu souhaites exporter en pdf) est :
Private Sub CommandButton1_Click() Dim Rep As String, NomFic As String Rep = "C:\Ici\LeChemin\D'accès\Aton\Répertoire" 'A ADAPTER NomFic = "nomDuFichierSansExtension" 'A ADAPTER ChDir Rep ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep & "\" & NomFic With ThisWorkbook .Save .Close End With End Sub
Pijaku .... Help ! J'ai un os :
Avec le code ci dessous, j'aimerai :
a) faire créer un fichier appelé Intermédiaire.xslx
b) faire copier la cellule R1C17 de la feuille Prospect d'Erola-6 dans la cellule R1C1 d'intermédiaire
c) ouvrir mon fichier Lola.xla qui ouvre par macro Lola.xls
e) faire copier la cellule R1C1 d'intermédiaire dasn Lola.xls cellule "Z1"
f) fermer intermédiaire
Mais là je suis paumé !!! Merci
Sub TestFichierInter()
'
' TestFichierInter Macro
'
'
'Je lui fais créer un fichier "Intermédiaire"
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Range("A1").Select
ActiveCell.FormulaR1C1 = "='[Erola-6.xlsm]Prospect'!R1C17"
Range("A2").Select
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Range("R1:U1").Select
ActiveCell.FormulaR1C1 = "=[Intermédiaire.xlsx]Feuil1!R1C1"
Range("R2").Select
End Sub
Avec le code ci dessous, j'aimerai :
a) faire créer un fichier appelé Intermédiaire.xslx
b) faire copier la cellule R1C17 de la feuille Prospect d'Erola-6 dans la cellule R1C1 d'intermédiaire
c) ouvrir mon fichier Lola.xla qui ouvre par macro Lola.xls
e) faire copier la cellule R1C1 d'intermédiaire dasn Lola.xls cellule "Z1"
f) fermer intermédiaire
Mais là je suis paumé !!! Merci
Sub TestFichierInter()
'
' TestFichierInter Macro
'
'
'Je lui fais créer un fichier "Intermédiaire"
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Range("A1").Select
ActiveCell.FormulaR1C1 = "='[Erola-6.xlsm]Prospect'!R1C17"
Range("A2").Select
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Range("R1:U1").Select
ActiveCell.FormulaR1C1 = "=[Intermédiaire.xlsx]Feuil1!R1C1"
Range("R2").Select
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 12:07
18 avril 2013 à 12:07
Mais là je suis paumé !!! Merci
Ca ne nous aide pas à savoir ce que tu n'arrives pas à faire.....
Bon, créer un fichier "intermédiaire" ça à l'air d'aller.
Ensuite, pour "aller chercher" des infos dans d'autres classeurs, je te recommande de ne pas utiliser de formule (FormulaR1C1). Par contre, tu utilises des = tout simplement, en faisant attention de bien nommer les fichiers.
Par exemple, si les deux classeurs sont ouverts, :
Même chose pour l'autre.
Ou alors, tu peux également passer par des variables...
Ca ne nous aide pas à savoir ce que tu n'arrives pas à faire.....
Bon, créer un fichier "intermédiaire" ça à l'air d'aller.
Ensuite, pour "aller chercher" des infos dans d'autres classeurs, je te recommande de ne pas utiliser de formule (FormulaR1C1). Par contre, tu utilises des = tout simplement, en faisant attention de bien nommer les fichiers.
Par exemple, si les deux classeurs sont ouverts, :
ActiveCell.FormulaR1C1 = "='[Erola-6.xlsm]Prospect'!R1C17"à remplacer par :
WorkBooks("Intermédiaire.xlsx").Sheets("NomDeLaFeuill").Range("A1").Value = WorkBooks("Erola-6.xlsm").Sheets("prospect").Range("Q1").Value
Même chose pour l'autre.
Ou alors, tu peux également passer par des variables...
Pijaku ! Le code coince ... savez-vous pourquoi ? Ol coince sur la ligne en gras ...
Sub TestFichierInter()
'
' TestFichierInter Macro
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsx", FileFormat:= _
xlNormalWorkbook, CreateBackup:=False
Range("A1").Select
Workbooks("Intermédiaire.xlsx").Sheets("Feuille1").Range("A1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Intermédiaire.xlsx").Sheets("Feuille1").Range("A1").Value
End Sub
Sub TestFichierInter()
'
' TestFichierInter Macro
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsx", FileFormat:= _
xlNormalWorkbook, CreateBackup:=False
Range("A1").Select
Workbooks("Intermédiaire.xlsx").Sheets("Feuille1").Range("A1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Intermédiaire.xlsx").Sheets("Feuille1").Range("A1").Value
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 13:42
18 avril 2013 à 13:42
Oui, je sais pourquoi...
Tu as une macro dans ce fichier intermédiaire.xlsx.
Donc, par conséquent, tu dois l'enregistrer sous l'extension .xlsm.
De plus, le fileformat d'uin fichier contenant des macros n'est pas xlNormalWorkbook, mais xlOpenXMLWorkbookMacroEnabled
Donc, ton code deviendrait :
Tu as une macro dans ce fichier intermédiaire.xlsx.
Donc, par conséquent, tu dois l'enregistrer sous l'extension .xlsm.
De plus, le fileformat d'uin fichier contenant des macros n'est pas xlNormalWorkbook, mais xlOpenXMLWorkbookMacroEnabled
Donc, ton code deviendrait :
ActiveWorkbook.SaveAs Filename:= _ "X:\EROLA\Intermédiaire.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Franck ! Je n'y comprends plus rien ... J'ai activé le code ci-dessous et le résultat est qu'il m'enregistre le fichier Erola sous le nom d'intermédiaire au lieu de créer un fichier intermédiaire où je veux juste remplir la cellule A1 ... pour m'en resservir dasn lOla ...
Sub TestFichierInter()
'
' TestFichierInter Macro
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Range("A1").Select
Workbooks("Intermédiaire.xlsm").Sheets("Feuille1").Range("A1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Intermédiaire.xlsm").Sheets("Feuille1").Range("A1").Value
End Sub
Sub TestFichierInter()
'
' TestFichierInter Macro
ActiveWorkbook.SaveAs Filename:="X:\EROLA\Intermédiaire.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Range("A1").Select
Workbooks("Intermédiaire.xlsm").Sheets("Feuille1").Range("A1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _
xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Intermédiaire.xlsm").Sheets("Feuille1").Range("A1").Value
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 13:51
18 avril 2013 à 13:51
Tu créées un fichier juste pour garder une donnée?????
Mets la dans une variable.
Genre :
Ou alors, si tu ne fermes pas ton classeur Erola :
Mets la dans une variable.
Genre :
Dim MaVar As String MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _ xlAutoOpen Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = MaVar
Ou alors, si tu ne fermes pas ton classeur Erola :
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:= _ xlAutoOpen Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Franck ! Il me plante sur l'ouverture de Lola xla je n'ai pourtant rien changé !! Sauriez-vous pourquoi ?
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:=xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:=xlAutoOpen
Workbooks("LOLA.xls").Sheets("LOLA").Range("Z1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("Q1").Value
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 14:46
18 avril 2013 à 14:46
Je ne sais pas.
1- je n'ai jamais ouvert de classeur .xla par macro,
2- je ne sais pas quel est le message d'erreur...
1- je n'ai jamais ouvert de classeur .xla par macro,
2- je ne sais pas quel est le message d'erreur...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 14:52
18 avril 2013 à 14:52
Mais au fait, Lola c'est un .xla ou .xls........Mmmmm
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
18 avril 2013 à 15:12
18 avril 2013 à 15:12
C'est pourquoi, je t'ai proposé, non pas de créer un fichier intermédiaire, mais de passer par une variable:
A ADPATER bien sur, les feuilles machin ça ne va pas fonctionner...
A ADPATER bien sur, les feuilles machin ça ne va pas fonctionner...
Dim MaVar As String MaVar = Workbooks("Erola").Sheets("machin").Range("truc").Value 'création du répertoire 'enregistrement sous 123-Lille Workbooks.Open("Lola") With Workbooks(lola) .Sheets(machin).Range(bidule) = MaVar End With
Bonjour Franck ! Non je ne vous ai pas laissé tomber sans même un merci mais j'ai été un peu débordé et un we de folie ...
Bon pour revenir à nos moutons ...
J'ai une macro ci-dessous qui fonctionnait bien mais qui là ne fonctionne plus (erreur 1004 La méthode 'SaveAs' de l'objet '_workbook' a échoué) que je en comprends pas ... Voici le code :
Sub EnregFichier()
Dim chemin As String
Dim repertoire As String
Dim nom As String
Dim extension As String
chemin = "W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola\"
repertoire = ActiveSheet.Range("AF1") & "\"
nom = ActiveSheet.Range("AF1")
extension = ".xlsm"
ActiveWorkbook.SaveAs Filename:=chemin & repertoire & nom & extension, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Pouvez-vous tenter de m'éclairer un brin ? D'avance merci !
Bon pour revenir à nos moutons ...
J'ai une macro ci-dessous qui fonctionnait bien mais qui là ne fonctionne plus (erreur 1004 La méthode 'SaveAs' de l'objet '_workbook' a échoué) que je en comprends pas ... Voici le code :
Sub EnregFichier()
Dim chemin As String
Dim repertoire As String
Dim nom As String
Dim extension As String
chemin = "W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola\"
repertoire = ActiveSheet.Range("AF1") & "\"
nom = ActiveSheet.Range("AF1")
extension = ".xlsm"
ActiveWorkbook.SaveAs Filename:=chemin & repertoire & nom & extension, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Pouvez-vous tenter de m'éclairer un brin ? D'avance merci !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
22 avril 2013 à 12:24
22 avril 2013 à 12:24
Bonjour,
Pouvez-vous tenter de m'éclairer un brin ?
Ben pas vraiment. Ce code fonctionne super bien chez moi........
Alors je penche pour une erreur d'utilisateur.
Vérifie bien tout... L'orthographe, la cellule AF1 etc etc...
Remplace peut être ActiveShhet pas Sheets("NomDeLaFeuille")...
Fait des tests en écrivant en "dur" tes variables une par une : [changements en gras]
Reviens me dire si ça cloche encore.
Attention également aux caractères interdits par Windows dans les noms de fichier : ", /, \, *, ?, <, >, |, :
Pouvez-vous tenter de m'éclairer un brin ?
Ben pas vraiment. Ce code fonctionne super bien chez moi........
Alors je penche pour une erreur d'utilisateur.
Vérifie bien tout... L'orthographe, la cellule AF1 etc etc...
Remplace peut être ActiveShhet pas Sheets("NomDeLaFeuille")...
Fait des tests en écrivant en "dur" tes variables une par une : [changements en gras]
Sub PremierTest() Dim chemin As String Dim repertoire As String Dim nom As String Dim extension As String chemin = "W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola\" repertoire = "2013 CCM\" nom = ActiveSheet.Range("AF1") extension = ".xlsm" ActiveWorkbook.SaveAs Filename:=chemin & repertoire & nom & extension, FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub
Sub SecondTest() Dim chemin As String Dim repertoire As String Dim nom As String Dim extension As String chemin = "W:\07 - Espace collaboratif\Programmation\Opérations d'investissement\Opérations Erola\" repertoire = "2013 CCM\" nom = "2013 CCM" extension = ".xlsm" ActiveWorkbook.SaveAs Filename:=chemin & repertoire & nom & extension, FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub
Reviens me dire si ça cloche encore.
Attention également aux caractères interdits par Windows dans les noms de fichier : ", /, \, *, ?, <, >, |, :
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
Modifié par pijaku le 22/04/2013 à 16:20
Modifié par pijaku le 22/04/2013 à 16:20
Ben si.....
1 - j'ouvre Erola-6.xlsm,
je créé aussitôt un code pour cette opération ==> J'ai pas compris...
1 bis- je stocke, dans une variable le nom dont j'aurais besoin par la suite.
exemple1 :
exemple2 :
je définis un répertoire (321-Lille) et un nom de fichier pour (321-Lille.xlsm)
j'enregistre le new fichier. Donc je n'ai plus Erola-6.xlsm de dispo. ==> En effet, mais je n'en ai plus besoin, mon nom étant stocké dans une variable
Je continue ma saisie sur (321-Lille.xlsm)
2- j'ouvre Lola.xls
3 - je voudrais enregistrer Lola.xls sous "321-Lille-Lola".
exemple :
Cordialement,
Franck P
1 - j'ouvre Erola-6.xlsm,
je créé aussitôt un code pour cette opération ==> J'ai pas compris...
1 bis- je stocke, dans une variable le nom dont j'aurais besoin par la suite.
exemple1 :
Dim MaVar As String MaVar = "321-Lille-"
exemple2 :
Dim MaVar As String MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value
je définis un répertoire (321-Lille) et un nom de fichier pour (321-Lille.xlsm)
j'enregistre le new fichier. Donc je n'ai plus Erola-6.xlsm de dispo. ==> En effet, mais je n'en ai plus besoin, mon nom étant stocké dans une variable
Je continue ma saisie sur (321-Lille.xlsm)
2- j'ouvre Lola.xls
3 - je voudrais enregistrer Lola.xls sous "321-Lille-Lola".
exemple :
Dim chemin As String, repertoire As String, nom As String, extension As String
Dim MaVar As String
MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value
'
'Bla bla bla ton code ICI
'je définis un répertoire (321-Lille) et un nom de fichier pour (321-Lille.xlsm)
'j'enregistre le new fichier
'Je continue ma saisie sur (321-Lille.xlsm)
'j'ouvre Lola.xls
'etc...
'etc....
'PROCEDURE D'ENREGISTREMENT DE Lola.xls sous 312-lille-Lola
chemin = "C:\Users\Excel\Travail\"
repertoire = "blablabla\"
nom = MaVar & "Lola"
extension = ".xls"
With Workbooks("lola.xls")
.SaveAs Filename:=chemin & repertoire & nom & extension
End With
Cordialement,
Franck P
Bonjour Franck ! Quel temps à Lille ? Ici brumeux mais belle journée annoncée ... On attend !
Bon je reprends pied dans mon fichier .... Alors pour répondre à votre question "je créé aussitôt un code pour cette opération ==> J'ai pas compris... ". Si vous vous rappelez, je rapatrie un code auto qui va me permettre d'identifier mon opération ("321" dans l'exemple 321-Lille ). Vous m'aviez même demandé comment s'attribuait le code auto.
Pour le reste du code macro communiquer, je le mets dans mon fichier et vous dit ! Bien à Vous,
JPierre
Bon je reprends pied dans mon fichier .... Alors pour répondre à votre question "je créé aussitôt un code pour cette opération ==> J'ai pas compris... ". Si vous vous rappelez, je rapatrie un code auto qui va me permettre d'identifier mon opération ("321" dans l'exemple 321-Lille ). Vous m'aviez même demandé comment s'attribuait le code auto.
Pour le reste du code macro communiquer, je le mets dans mon fichier et vous dit ! Bien à Vous,
JPierre
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
23 avril 2013 à 08:56
23 avril 2013 à 08:56
Salut JP,
Pluie, temps maussade pour toute la journée. Une belle journée de printemps qui s'annonce!
Euh JP, depuis le temps (73 messages), il est temps de se tutoyer non?
Pluie, temps maussade pour toute la journée. Une belle journée de printemps qui s'annonce!
Euh JP, depuis le temps (73 messages), il est temps de se tutoyer non?
Ok Franck ... D'accord pour le tutoiement ! Bon je vois que le Nord demeure le Nord .... Lol !
Bon la macro suivante ne fonctionne pas ... Je ne récupère pas MaVar d'Erola-6.xlsm dans Lola.xlsx cellule Z1, peux-tu jeter un oeil ? D'avance merci :
Sub Ouvrelola()
Dim MaVar As String
MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value
'enregistrement sous 123-Lille
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:=xlAutoOpen
With Workbooks("LOLA.xls")
.Sheets("LOLA").Range("Z1") = MaVar
End With
End Sub
Bon la macro suivante ne fonctionne pas ... Je ne récupère pas MaVar d'Erola-6.xlsm dans Lola.xlsx cellule Z1, peux-tu jeter un oeil ? D'avance merci :
Sub Ouvrelola()
Dim MaVar As String
MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value
'enregistrement sous 123-Lille
Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:=xlAutoOpen
With Workbooks("LOLA.xls")
.Sheets("LOLA").Range("Z1") = MaVar
End With
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
23 avril 2013 à 09:44
23 avril 2013 à 09:44
1- Essaye de placer un MsgBox après l'implémentation de MaVar, pour voir ce qu'elle contient :
2- tu as du mal avec les extensions de fichier... Tu parles de .xlsx, dans ton code c'est toujours .xla et hier c'était .xls.... Faudrait savoir.
Sub Ouvrelola() Dim MaVar As String MaVar = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value MsgBox MaVar 'enregistrement sous 123-Lille Workbooks.Open(Filename:="X:\EROLA\LOLA.xla").RunAutoMacros Which:=xlAutoOpen With Workbooks("LOLA.xls") .Sheets("LOLA").Range("Z1") = MaVar End With End Sub
2- tu as du mal avec les extensions de fichier... Tu parles de .xlsx, dans ton code c'est toujours .xla et hier c'était .xls.... Faudrait savoir.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 741
23 avril 2013 à 12:23
23 avril 2013 à 12:23
J'en penses : un érola de trop...
Sinon de tes fichiers, je n'en penses rien. J'arrive vraisemblablement en fin de parcours créatif, donc c'est beaucoup trop complexe pour que j'y comprenne quelque chose...
Bon, lors de l'ouverture de lola.xla, il faut cliquer sur un bouton pour ouvrir lola.xls.
Par conséquent notre macro ne peux pas fonctionner.
Je te propose donc cette solution :
Lorsque tu créées ton nouveau fichier (ex : 321-Lille), tu y insères, dans une cellule clairement identifiée (ex : Sheets("Listes").Range("AZ1")) la référence que tu veux transmettre à Lola.xls.
Comme ceci :
Puis, pour récupérer la valeur stockée dans 312-lille, tu créées une macro, dans lola.xls, qui se déclenche à l'ouverture de lola.xls, et qui va chercher cette valeur :
Dans lola.xls :
Dans le module ThisWorkbook de lola.xls :
Sinon de tes fichiers, je n'en penses rien. J'arrive vraisemblablement en fin de parcours créatif, donc c'est beaucoup trop complexe pour que j'y comprenne quelque chose...
Bon, lors de l'ouverture de lola.xla, il faut cliquer sur un bouton pour ouvrir lola.xls.
Par conséquent notre macro ne peux pas fonctionner.
Je te propose donc cette solution :
Lorsque tu créées ton nouveau fichier (ex : 321-Lille), tu y insères, dans une cellule clairement identifiée (ex : Sheets("Listes").Range("AZ1")) la référence que tu veux transmettre à Lola.xls.
Comme ceci :
Workbooks("Erola-6.xlsm").Sheets("Listes").Range("AZ1").Value = Workbooks("Erola-6.xlsm").Sheets("Prospect").Range("AF1").Value 'enregistrement sous 123-Lille
Puis, pour récupérer la valeur stockée dans 312-lille, tu créées une macro, dans lola.xls, qui se déclenche à l'ouverture de lola.xls, et qui va chercher cette valeur :
Dans lola.xls :
Dans le module ThisWorkbook de lola.xls :
Private Sub Workbook_Open() Dim Wb As Workbook Dim Ws As Worksheet For Each Wb In Application.Workbooks For Each Ws In Wb.Worksheets If Ws.Name = "Listes" Then ThisWorkbook.Sheets("LOLA").Range("Z1") = Workbooks(Wb.Name).Sheets(Ws.Name).Range("AZ1") End If Next Ws Next Wb End Sub