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

Récupérer contenu de cellules sur plusieurs onglets et copier

6 réponses
Avatar
Pierre F.
Bonjour =E0 toutes et tous;

J'ai un dossier xls de 41 feuilles
Je souhaiterais r=E9cup=E9rer par macro sur chacune des feuilles 3 =E0 41=
le=20
contenu de la cellule (X, 6), c'est =E0 dire la ligne X (X =E9tant le num=
=E9ro=20
de la ligne de la cellule active) et la colonne F.

Puis, dans un autre fichier (ou une nouvelle feuille, c'est =E9gal), je=20
souhaiterais copier ces 38 contenus dans la colonne B =E0 raison de 1=20
contenu par ligne

J'ai commenc=E9 une macro mais elle bogue... (L'indice n'appartient pas =E0=
la=20
s=E9lection) sur la ligne * sem(i)=3D i *.

--------------------
Sub CreerTablUn()

ligne =3D ActiveCell.Row 'ligne celleule active

For i =3D 1 To 38

Sheets(i+2).Activate 'va =E0 la feuille i+2

sem(i) =3D i 'variable pour le num=E9ro de l'onglet
com(i) =3D Cells(ligne, 6 'variable pour le contenu de cell(ligne,6)

Next i

'cr=E9er le titre du nouveau fichier

src =3D "Suivi"
dest =3D src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un num=E9ro et en B le contenu de la cellule de l'onglet=
=20
correspondant

For j =3D 3 To 41
Cells(j, 1) =3D j - 2
Cells(j, 2) =3D com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:=3Ddest
ActiveWorkbook.Close

End Sub
--------------------

O=F9 est l'erreur ??

Merci de votre aide.

Cordialement,
Pierre F.

6 réponses

Avatar
Daniel.C
Bonjour.
Peut-être comme ça (non testé) bien que ne ne voie pas ou tu as l'usage
de "sem" :

Sub CreerTablUn()

Dim sem(), com(), ligne As Long
ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38
ligne = ActiveCell.Row 'ligne celleule active
Sheets(i + 2).Activate 'va à la feuille i+2
ReDim Preserve sem(i)
ReDim Preserve com(i)
sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6) 'variable pour le contenu de
cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub


Bonjour à toutes et tous;

J'ai un dossier xls de 41 feuilles
Je souhaiterais récupérer par macro sur chacune des feuilles 3 à 41 le
contenu de la cellule (X, 6), c'est à dire la ligne X (X étant le numéro de
la ligne de la cellule active) et la colonne F.

Puis, dans un autre fichier (ou une nouvelle feuille, c'est égal), je
souhaiterais copier ces 38 contenus dans la colonne B à raison de 1 contenu
par ligne

J'ai commencé une macro mais elle bogue... (L'indice n'appartient pas à la
sélection) sur la ligne * sem(i)= i *.

--------------------
Sub CreerTablUn()

ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38

Sheets(i+2).Activate 'va à la feuille i+2

sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6 'variable pour le contenu de cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub
--------------------

Où est l'erreur ??

Merci de votre aide.

Cordialement,
Pierre F.


Avatar
Daniel.C
Oups. J'ai pposté ton propre code :

Sub CreerTablUn()

Dim sem(), com(), ligne As Long
ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38
ligne = ActiveCell.Row 'ligne celleule active
Sheets(i + 2).Activate 'va à la feuille i+2
ReDim Preserve sem(i)
ReDim Preserve com(i)
sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6) 'variable pour le contenu de
cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub

Daniel

Bonjour.
Peut-être comme ça (non testé) bien que ne ne voie pas ou tu as l'usage de
"sem" :

Sub CreerTablUn()

Dim sem(), com(), ligne As Long
ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38
ligne = ActiveCell.Row 'ligne celleule active
Sheets(i + 2).Activate 'va à la feuille i+2
ReDim Preserve sem(i)
ReDim Preserve com(i)
sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6) 'variable pour le contenu de cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub


Bonjour à toutes et tous;

J'ai un dossier xls de 41 feuilles
Je souhaiterais récupérer par macro sur chacune des feuilles 3 à 41 le
contenu de la cellule (X, 6), c'est à dire la ligne X (X étant le numéro de
la ligne de la cellule active) et la colonne F.

Puis, dans un autre fichier (ou une nouvelle feuille, c'est égal), je
souhaiterais copier ces 38 contenus dans la colonne B à raison de 1 contenu
par ligne

J'ai commencé une macro mais elle bogue... (L'indice n'appartient pas à la
sélection) sur la ligne * sem(i)= i *.

--------------------
Sub CreerTablUn()

ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38

Sheets(i+2).Activate 'va à la feuille i+2

sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6 'variable pour le contenu de cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub
--------------------

Où est l'erreur ??

Merci de votre aide.

Cordialement,
Pierre F.




Avatar
michdenis
Bonjour,

Essaie ceci :

Avant de lancer la macro, assure toi que tu es sur la bonne
feuille et que c'est la bonne cellule qui est sélectionnée.

'----------------------------------------
Sub test()
Dim xlWh As XlSheetType
xlWh = xlWorksheet
Dim F As Worksheet, Wk As Workbook, X As Long

X = ActiveCell.Row

Application.ScreenUpdating = False
Application.EnableEvents = False
'Ajouter un classeur avec seulement une feuille
Set Wk = Workbooks.Add(xlWh)
Set F = Wk.ActiveSheet
F.Name = "Sommaire"

With ThisWorkbook
For A = 3 To 3
b = b + 1
F.Range("B" & b) = .Worksheets(A).Range("F" & X)
Next
.Activate
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'----------------------------------------



"Pierre F." a écrit dans le message de groupe de discussion :
18e2b$4b5b298c$55da27a5$
Bonjour à toutes et tous;

J'ai un dossier xls de 41 feuilles
Je souhaiterais récupérer par macro sur chacune des feuilles 3 à 41 le
contenu de la cellule (X, 6), c'est à dire la ligne X (X étant le numéro
de la ligne de la cellule active) et la colonne F.

Puis, dans un autre fichier (ou une nouvelle feuille, c'est égal), je
souhaiterais copier ces 38 contenus dans la colonne B à raison de 1
contenu par ligne

J'ai commencé une macro mais elle bogue... (L'indice n'appartient pas à la
sélection) sur la ligne * sem(i)= i *.

--------------------
Sub CreerTablUn()

ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38

Sheets(i+2).Activate 'va à la feuille i+2

sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6 'variable pour le contenu de cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub
--------------------

Où est l'erreur ??

Merci de votre aide.

Cordialement,
Pierre F.
Avatar
michdenis
Une suggestion,

Tu devrais protéger ton classeur (pas les feuilles) afin d'empêcher
de modifier l'ordre des feuilles, la macro ne serait probablement
plus d'un bon usage.



"michdenis" a écrit dans le message de groupe de discussion :

Bonjour,

Essaie ceci :

Avant de lancer la macro, assure toi que tu es sur la bonne
feuille et que c'est la bonne cellule qui est sélectionnée.

'----------------------------------------
Sub test()
Dim xlWh As XlSheetType
xlWh = xlWorksheet
Dim F As Worksheet, Wk As Workbook, X As Long

X = ActiveCell.Row

Application.ScreenUpdating = False
Application.EnableEvents = False
'Ajouter un classeur avec seulement une feuille
Set Wk = Workbooks.Add(xlWh)
Set F = Wk.ActiveSheet
F.Name = "Sommaire"

With ThisWorkbook
For A = 3 To 3
b = b + 1
F.Range("B" & b) = .Worksheets(A).Range("F" & X)
Next
.Activate
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'----------------------------------------



"Pierre F." a écrit dans le message de groupe de discussion :
18e2b$4b5b298c$55da27a5$
Bonjour à toutes et tous;

J'ai un dossier xls de 41 feuilles
Je souhaiterais récupérer par macro sur chacune des feuilles 3 à 41 le
contenu de la cellule (X, 6), c'est à dire la ligne X (X étant le numéro
de la ligne de la cellule active) et la colonne F.

Puis, dans un autre fichier (ou une nouvelle feuille, c'est égal), je
souhaiterais copier ces 38 contenus dans la colonne B à raison de 1
contenu par ligne

J'ai commencé une macro mais elle bogue... (L'indice n'appartient pas à la
sélection) sur la ligne * sem(i)= i *.

--------------------
Sub CreerTablUn()

ligne = ActiveCell.Row 'ligne celleule active

For i = 1 To 38

Sheets(i+2).Activate 'va à la feuille i+2

sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6 'variable pour le contenu de cell(ligne,6)

Next i

'créer le titre du nouveau fichier

src = "Suivi"
dest = src & Format(Date, "_mm_yyyy") & ".xls"

'Copier en col A un numéro et en B le contenu de la cellule de l'onglet
correspondant

For j = 3 To 41
Cells(j, 1) = j - 2
Cells(j, 2) = com(j - 2)
Next j

ActiveWorkbook.SaveAs Filename:Þst
ActiveWorkbook.Close

End Sub
--------------------

Où est l'erreur ??

Merci de votre aide.

Cordialement,
Pierre F.
Avatar
Pierre F.
Daniel.C a écrit :
Oups. J'ai posté ton propre code :

Sub CreerTablUn()
Dim sem(), com(), ligne As Long
ligne = ActiveCell.Row 'ligne celleule active
For i = 1 To 38
ligne = ActiveCell.Row 'ligne celleule active
Sheets(i + 2).Activate 'va à la feuille i+2
ReDim Preserve sem(i)
ReDim Preserve com(i)
sem(i) = i 'variable pour le numéro de l'onglet
com(i) = Cells(ligne, 6) 'variable pour le contenu de cell(lign e,6)
Next i
...
End Sub




Mille mercis; ça marche!; c'est les Dim et Redim qui me manquaient

Cordialement,
Pierre F.
Avatar
Pierre F.
michdenis a écrit :

Tu devrais protéger ton classeur (pas les feuilles) afin d'empêcher
de modifier l'ordre des feuilles, la macro ne serait probablement
plus d'un bon usage.



"michdenis" a écrit dans le message de groupe de discussion :

Bonjour,

Essaie ceci :

Avant de lancer la macro, assure toi que tu es sur la bonne
feuille et que c'est la bonne cellule qui est sélectionnée.



Merci pour les conseils et la macro; c'est super rapide!

En jouant sur les deux réponses (la tienne et celle de Daniel), je peux
bien avancer dans mon projet.

Bon dimanche

Cordialement,
Pierre F.