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

aide sur une macro de débutant

3 réponses
Avatar
ptck
bonsoir
débutant en macro,

j'ai cette la macro ci dessous qui recopie des cellules dans la feuille
"recap" de tous les onglets du classeur,
mais j'ai une copie de 3 fois les données d'un même onglet

en plus si je ne tiens pas compte de la ligne "on error resume next"
il y a un message "variable objet ou variable de bloc with non définie"

si qq veut bien m'aider je l'en remercie par avance


Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = Sheets(s).Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
Range(Cells(lgn1, 2), Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = Sheets(s).Columns("B:B").Find(What:="POUSSAGE / ETUVAGE /
SECHAGE").Row - 1

Range(Cells(lgn3, 2), Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End Sub

3 réponses

Avatar
Daniel.C
Bonsoir.
Il faut qualifier les plages que tu copies; si tu mets seulement "Range" oou
"Cells", tu copies les plages de la feuille active :

Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

With Sheets(s)
For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = .Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = .Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
.Range(.Cells(lgn1, 2), .Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = .Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = .Columns("B:B").Find(What:="POUSSAGE / ETUVAGE / SECHAGE ").Row -
1

.Range(.Cells(lgn3, 2), .Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End With
End Sub

Cordialement.
Daniel
"ptck" a écrit dans le message de news:

bonsoir
débutant en macro,

j'ai cette la macro ci dessous qui recopie des cellules dans la feuille
"recap" de tous les onglets du classeur,
mais j'ai une copie de 3 fois les données d'un même onglet

en plus si je ne tiens pas compte de la ligne "on error resume next"
il y a un message "variable objet ou variable de bloc with non définie"

si qq veut bien m'aider je l'en remercie par avance


Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = Sheets(s).Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
Range(Cells(lgn1, 2), Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = Sheets(s).Columns("B:B").Find(What:="POUSSAGE / ETUVAGE /
SECHAGE").Row - 1

Range(Cells(lgn3, 2), Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End Sub



Avatar
ptck
merci Daniel

mais je ne vois pas comment faire

"Daniel.C" a écrit dans le message de news:

Bonsoir.
Il faut qualifier les plages que tu copies; si tu mets seulement "Range"
oou "Cells", tu copies les plages de la feuille active :

Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

With Sheets(s)
For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = .Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = .Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
.Range(.Cells(lgn1, 2), .Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = .Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = .Columns("B:B").Find(What:="POUSSAGE / ETUVAGE / SECHAGE ").Row -
1

.Range(.Cells(lgn3, 2), .Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End With
End Sub

Cordialement.
Daniel
"ptck" a écrit dans le message de news:

bonsoir
débutant en macro,

j'ai cette la macro ci dessous qui recopie des cellules dans la feuille
"recap" de tous les onglets du classeur,
mais j'ai une copie de 3 fois les données d'un même onglet

en plus si je ne tiens pas compte de la ligne "on error resume next"
il y a un message "variable objet ou variable de bloc with non définie"

si qq veut bien m'aider je l'en remercie par avance


Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = Sheets(s).Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
Range(Cells(lgn1, 2), Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = Sheets(s).Columns("B:B").Find(What:="POUSSAGE / ETUVAGE /
SECHAGE").Row - 1

Range(Cells(lgn3, 2), Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End Sub








Avatar
Daniel.C
Bonsoir.
Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = Sheets(s).Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
Sheets(s).Range(Cells(lgn1, 2), Sheets(s).Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = Sheets(s).Columns("B:B").Find(What:="POUSSAGE / ETUVAGE /
SECHAGE").Row - 1

Sheets(s).Range(Cells(lgn3, 2), Sheets(s).Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End Sub
Daniel

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

merci Daniel

mais je ne vois pas comment faire

"Daniel.C" a écrit dans le message de news:

Bonsoir.
Il faut qualifier les plages que tu copies; si tu mets seulement "Range"
oou "Cells", tu copies les plages de la feuille active :

Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

With Sheets(s)
For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = .Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = .Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
.Range(.Cells(lgn1, 2), .Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = .Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = .Columns("B:B").Find(What:="POUSSAGE / ETUVAGE / SECHAGE
").Row - 1

.Range(.Cells(lgn3, 2), .Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End With
End Sub

Cordialement.
Daniel
"ptck" a écrit dans le message de news:

bonsoir
débutant en macro,

j'ai cette la macro ci dessous qui recopie des cellules dans la feuille
"recap" de tous les onglets du classeur,
mais j'ai une copie de 3 fois les données d'un même onglet

en plus si je ne tiens pas compte de la ligne "on error resume next"
il y a un message "variable objet ou variable de bloc with non définie"

si qq veut bien m'aider je l'en remercie par avance


Sub CopieFeuille()
Dim lgn1, lgn2, lgn3, lgn4 As Long

Sheets("recap").[A1].CurrentRegion.Offset(1, 0).Clear

For s = 2 To Sheets.Count
On Error Resume Next
lgn1 = Sheets(s).Columns("B:B").Find(What:="fabrication").Row + 4
'If Err <> 0 Then Exit Sub
' Else if
lgn2 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row - 1
If Err <> 0 Then
Exit Sub
Else
Range(Cells(lgn1, 2), Cells(lgn2, 4)).Copy

End If

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

lgn3 = Sheets(s).Columns("B:B").Find(What:="INGREDIENTS").Row + 2

lgn4 = Sheets(s).Columns("B:B").Find(What:="POUSSAGE / ETUVAGE /
SECHAGE").Row - 1

Range(Cells(lgn3, 2), Cells(lgn4, 4)).Copy

Sheets("recap").Range("A65536").End(xlUp).Offset(1).PasteSpecial
Paste:=xlPasteValues

Next s
End Sub