Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Executer macro sur toutes les feuilles du classeur actif

4 réponses
Avatar
kerr2
Bonjour,

J'ai créé avec l'aide du forum une petite macro (ImportImagesSousRep,
module1) pour importer des photos sur une feuille de classeur. Cette macro
fonctionne sur toutes les feuilles du classeur.

Je voudrai maintenant créer une macro qui puisse exécuter la précédente
automatiquement sur toute les feuilles du classeur actif.
Il faudrait aussi a la fin de l'execution de celle-ci se retrouver à nouveau
sur la feuille de départ du classeur (ou a été lancé la macro).

J'ai essayé cela mais il manque quelques choses puisque je boucle sur la
feuille ou la macro est lancée.

En vous remerciant par avance.


Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
=> Worksheets (i)
ImportImagesSousRep
Next i
End Sub

4 réponses

Avatar
anonymousA
Bonjour,

Il faut que ta procédure ImportImagesSousRep soit une procédure
paramétrée dont l'argument serait p.e la feuille ( exemple:
ImportImagesSousRep worksheets(I) ) et dans ta procédure
ImportImagesSousRep , il faut que tous les objets ou cellules soient
référencés par rapport à un objet de type worksheet

exemple
Sub ImportImagesSousRep ( wks as worksheet)

wks.cells(1,1).value=2
wks.OLEObject(1).name="toto
etc..

donc au final

Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
ImportImagesSousRep Worksheets (i)
Next i
End Sub

As-tu saisi le principe ?

A+

kerr2 wrote:
Bonjour,

J'ai créé avec l'aide du forum une petite macro (ImportImagesSousRep,
module1) pour importer des photos sur une feuille de classeur. Cette macro
fonctionne sur toutes les feuilles du classeur.

Je voudrai maintenant créer une macro qui puisse exécuter la préc édente
automatiquement sur toute les feuilles du classeur actif.
Il faudrait aussi a la fin de l'execution de celle-ci se retrouver à no uveau
sur la feuille de départ du classeur (ou a été lancé la macro).

J'ai essayé cela mais il manque quelques choses puisque je boucle sur la
feuille ou la macro est lancée.

En vous remerciant par avance.


Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
=> Worksheets (i)
ImportImagesSousRep
Next i
End Sub


Avatar
kerr2
Merci anonymousA pour ta réponse.

Je ne vois pas très bien ou je dois mettre wks. dans la macro ci-dessous?
Si tu peux m'aider.
Est ce que la macro ImportImagesSousRep continuera à pouvoir être executée
indépendemment?
Comment modifier pour qu'elle puisse toujours etre executée indépendemment ?

En te remerciant par avance.

Sub MajPhotoClasseur()
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
=> ImportImagesSousRep Worksheets(i)
Next i
End Sub



=> Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la
feuille active
ChDir ActiveWorkbook.Path
NomOnglet = ActiveSheet.Name
sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
chemin = ActiveWorkbook.Path & sousRep
nf = Dir("*.jpg") ' premier fichier
nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub



Sub ImportImages(chemin As String)
'Application.ScreenUpdating = False
Do While ActiveCell.Offset(2, 0).Value <> ""
nf = ActiveCell.Offset(2, 0).Value & ".jpg"
If Dir(chemin & nf) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf)
ActiveCell.EntireRow.RowHeight =
monimage.Height + 0
Else
nf1 = ActiveCell.Offset(2, 0).Value & "
" & Left(ActiveCell.Offset(3, 0).Value, 1) & ".jpg"
If Dir(chemin & nf1) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf1)
ActiveCell.EntireRow.RowHeight
= monimage.Height + 0
End If
End If
ActiveCell.Offset(0, 2).Select
Loop
End Sub


Ce que j'ai essayé et qui ne fonctionne pas

Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la feuille
active
ChDir ActiveWorkbook.Path
wks.NomOnglet = ActiveSheet.Name
wks.sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
wks.chemin = ActiveWorkbook.Path & sousRep
wks.nf = Dir("*.jpg") ' premier fichier
wks.nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub

Merci


















"anonymousA" a écrit dans le message de news:

Bonjour,

Il faut que ta procédure ImportImagesSousRep soit une procédure
paramétrée dont l'argument serait p.e la feuille ( exemple:
ImportImagesSousRep worksheets(I) ) et dans ta procédure
ImportImagesSousRep , il faut que tous les objets ou cellules soient
référencés par rapport à un objet de type worksheet

exemple
Sub ImportImagesSousRep ( wks as worksheet)

wks.cells(1,1).value=2
wks.OLEObject(1).name="toto
etc..

donc au final

Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
ImportImagesSousRep Worksheets (i)
Next i
End Sub

As-tu saisi le principe ?

A+

kerr2 wrote:
Bonjour,

J'ai créé avec l'aide du forum une petite macro (ImportImagesSousRep,
module1) pour importer des photos sur une feuille de classeur. Cette macro
fonctionne sur toutes les feuilles du classeur.

Je voudrai maintenant créer une macro qui puisse exécuter la précédente
automatiquement sur toute les feuilles du classeur actif.
Il faudrait aussi a la fin de l'execution de celle-ci se retrouver à
nouveau
sur la feuille de départ du classeur (ou a été lancé la macro).

J'ai essayé cela mais il manque quelques choses puisque je boucle sur la
feuille ou la macro est lancée.

En vous remerciant par avance.


Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
=> Worksheets (i)
ImportImagesSousRep
Next i
End Sub


Avatar
anonymousA
Comme je n'ai pas eu très envie de chercher, je te rajoute à l'entrée de
la proc l'instruction wks.activate ( avec un petit test et aussi le
Optional wks qui permet de faire fonctionner la proc sans lui passser de
paramètre au besoin puisque c'était une de tes questions ) ce qui va
donc activer la feuille en question et permettre sans changer ta proc de
marcher avec tous les activesheet que tu y a mis.
Cependant, il est très rarement nécéssaire d'activer ou de selectionner
pour faire ce que l'on souhaite mais je n'ai pas trop le temps de
remanier ta proc en profondeur.

Je pars en vacances ce soir ou demain matin et je dois reconnaitre que
je ne pense qusiment qu'à ca.

Sub ImportImagesSousRep(optional wks As Worksheet)
Dim chemin As String
if not wks is nothing then wks.activate
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la
feuille active
ChDir ActiveWorkbook.Path
NomOnglet = ActiveSheet.Name
sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
chemin = ActiveWorkbook.Path & sousRep
nf = Dir("*.jpg") ' premier fichier
nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub

A+


Merci anonymousA pour ta réponse.

Je ne vois pas très bien ou je dois mettre wks. dans la macro ci-dessous?
Si tu peux m'aider.
Est ce que la macro ImportImagesSousRep continuera à pouvoir être executée
indépendemment?
Comment modifier pour qu'elle puisse toujours etre executée indépendemment ?

En te remerciant par avance.

Sub MajPhotoClasseur()
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
=> ImportImagesSousRep Worksheets(i)
Next i
End Sub



=> Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la
feuille active
ChDir ActiveWorkbook.Path
NomOnglet = ActiveSheet.Name
sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
chemin = ActiveWorkbook.Path & sousRep
nf = Dir("*.jpg") ' premier fichier
nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub



Sub ImportImages(chemin As String)
'Application.ScreenUpdating = False
Do While ActiveCell.Offset(2, 0).Value <> ""
nf = ActiveCell.Offset(2, 0).Value & ".jpg"
If Dir(chemin & nf) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf)
ActiveCell.EntireRow.RowHeight =
monimage.Height + 0
Else
nf1 = ActiveCell.Offset(2, 0).Value & "
" & Left(ActiveCell.Offset(3, 0).Value, 1) & ".jpg"
If Dir(chemin & nf1) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf1)
ActiveCell.EntireRow.RowHeight
= monimage.Height + 0
End If
End If
ActiveCell.Offset(0, 2).Select
Loop
End Sub


Ce que j'ai essayé et qui ne fonctionne pas

Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la feuille
active
ChDir ActiveWorkbook.Path
wks.NomOnglet = ActiveSheet.Name
wks.sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
wks.chemin = ActiveWorkbook.Path & sousRep
wks.nf = Dir("*.jpg") ' premier fichier
wks.nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub

Merci


















"anonymousA" a écrit dans le message de news:

Bonjour,

Il faut que ta procédure ImportImagesSousRep soit une procédure
paramétrée dont l'argument serait p.e la feuille ( exemple:
ImportImagesSousRep worksheets(I) ) et dans ta procédure
ImportImagesSousRep , il faut que tous les objets ou cellules soient
référencés par rapport à un objet de type worksheet

exemple
Sub ImportImagesSousRep ( wks as worksheet)

wks.cells(1,1).value=2
wks.OLEObject(1).name="toto
etc..

donc au final

Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
ImportImagesSousRep Worksheets (i)
Next i
End Sub

As-tu saisi le principe ?

A+

kerr2 wrote:
Bonjour,

J'ai créé avec l'aide du forum une petite macro (ImportImagesSousRep,
module1) pour importer des photos sur une feuille de classeur. Cette macro
fonctionne sur toutes les feuilles du classeur.

Je voudrai maintenant créer une macro qui puisse exécuter la précédente
automatiquement sur toute les feuilles du classeur actif.
Il faudrait aussi a la fin de l'execution de celle-ci se retrouver à
nouveau
sur la feuille de départ du classeur (ou a été lancé la macro).

J'ai essayé cela mais il manque quelques choses puisque je boucle sur la
feuille ou la macro est lancée.

En vous remerciant par avance.


Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
=> Worksheets (i)
ImportImagesSousRep
Next i
End Sub






Avatar
kerr2
Merci anonymousA.
Je vais tester ce que tu as écrits.
Je vais essayer de demander a d'autre personne du Forum pour essayer de
remanier un peu en profondeur.


Bonne Vacances
Bientot mon tour :)




"anonymousA" a écrit dans le message de news:
44c10e6d$0$846$
Comme je n'ai pas eu très envie de chercher, je te rajoute à l'entrée de
la proc l'instruction wks.activate ( avec un petit test et aussi le
Optional wks qui permet de faire fonctionner la proc sans lui passser de
paramètre au besoin puisque c'était une de tes questions ) ce qui va donc
activer la feuille en question et permettre sans changer ta proc de
marcher avec tous les activesheet que tu y a mis.
Cependant, il est très rarement nécéssaire d'activer ou de selectionner
pour faire ce que l'on souhaite mais je n'ai pas trop le temps de remanier
ta proc en profondeur.

Je pars en vacances ce soir ou demain matin et je dois reconnaitre que je
ne pense qusiment qu'à ca.

Sub ImportImagesSousRep(optional wks As Worksheet)
Dim chemin As String
if not wks is nothing then wks.activate
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la
feuille active
ChDir ActiveWorkbook.Path
NomOnglet = ActiveSheet.Name
sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
chemin = ActiveWorkbook.Path & sousRep
nf = Dir("*.jpg") ' premier fichier
nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub

A+


Merci anonymousA pour ta réponse.

Je ne vois pas très bien ou je dois mettre wks. dans la macro ci-dessous?
Si tu peux m'aider.
Est ce que la macro ImportImagesSousRep continuera à pouvoir être
executée indépendemment?
Comment modifier pour qu'elle puisse toujours etre executée
indépendemment ?

En te remerciant par avance.

Sub MajPhotoClasseur()
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
=> ImportImagesSousRep Worksheets(i)
Next i
End Sub



=> Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de
la feuille active
ChDir ActiveWorkbook.Path
NomOnglet = ActiveSheet.Name
sousRep = "Photos " & NomOnglet & "" ' nom du sous
rep"
chemin = ActiveWorkbook.Path & sousRep
nf = Dir("*.jpg") ' premier fichier
nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub



Sub ImportImages(chemin As String)
'Application.ScreenUpdating = False
Do While ActiveCell.Offset(2, 0).Value <> ""
nf = ActiveCell.Offset(2, 0).Value & ".jpg"
If Dir(chemin & nf) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf)
ActiveCell.EntireRow.RowHeight =
monimage.Height + 0
Else
nf1 = ActiveCell.Offset(2, 0).Value &
" " & Left(ActiveCell.Offset(3, 0).Value, 1) & ".jpg"
If Dir(chemin & nf1) <> "" Then
Set monimage =
ActiveSheet.Pictures.Insert(chemin & nf1)

ActiveCell.EntireRow.RowHeight = monimage.Height + 0
End If
End If
ActiveCell.Offset(0, 2).Select
Loop
End Sub


Ce que j'ai essayé et qui ne fonctionne pas

Sub ImportImagesSousRep(wks As Worksheet)
Dim chemin As String
ActiveSheet.Pictures.Delete 'Efface toutes les photos de la
feuille active
ChDir ActiveWorkbook.Path
wks.NomOnglet = ActiveSheet.Name
wks.sousRep = "Photos " & NomOnglet & "" ' nom du sous rep"
wks.chemin = ActiveWorkbook.Path & sousRep
wks.nf = Dir("*.jpg") ' premier fichier
wks.nf1 = Dir("*.jpeg")
Range("a7").Select
ImportImages chemin
Range("a12").Select
ImportImages chemin
Range("a17").Select
ImportImages chemin
Encadrer
End Sub

Merci


















"anonymousA" a écrit dans le message de news:

Bonjour,

Il faut que ta procédure ImportImagesSousRep soit une procédure
paramétrée dont l'argument serait p.e la feuille ( exemple:
ImportImagesSousRep worksheets(I) ) et dans ta procédure
ImportImagesSousRep , il faut que tous les objets ou cellules soient
référencés par rapport à un objet de type worksheet

exemple
Sub ImportImagesSousRep ( wks as worksheet)

wks.cells(1,1).value=2
wks.OLEObject(1).name="toto
etc..

donc au final

Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
ImportImagesSousRep Worksheets (i)
Next i
End Sub

As-tu saisi le principe ?

A+

kerr2 wrote:
Bonjour,

J'ai créé avec l'aide du forum une petite macro (ImportImagesSousRep,
module1) pour importer des photos sur une feuille de classeur. Cette
macro
fonctionne sur toutes les feuilles du classeur.

Je voudrai maintenant créer une macro qui puisse exécuter la
précédente
automatiquement sur toute les feuilles du classeur actif.
Il faudrait aussi a la fin de l'execution de celle-ci se retrouver à
nouveau
sur la feuille de départ du classeur (ou a été lancé la macro).

J'ai essayé cela mais il manque quelques choses puisque je boucle sur la
feuille ou la macro est lancée.

En vous remerciant par avance.


Sub MajPhotoClasseur()
'Application.ScreenUpdating = False
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
For i = 1 To nombre
=> Worksheets (i)
ImportImagesSousRep
Next i
End Sub