utilisation de "With"

Le
Sunburn
Bonjour,
comment puis-je indiquer plusieurs onglets pour ce code :
with sheets("30_31","30_41") est-il correcte ??
--
> Sub FTS30()
> 'onglet 30_31
> With Sheets("30_31")
> 'deplacement
> .[H10:H29].Copy
> .[F10].PasteSpecial Paste:=xlPasteValues
> Application.CutCopyMode = False
> .[E10:E29,H10:H29].ClearContents 'effacement
> .[A4] = "NA" 'on met la valeur NA en A4
> End With
> End Sub
--
Merci.
YANN
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #18031821
Salut à toi

Il faut mettre :

For i = 1 To Sheets.Count
If "30_31,30_41" Like "*" & Sheets(i).Name & "*" Then
With Sheets(i)
'deplacement
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "NA" 'on met la valeur NA en A4
End With
End If
Next

Celà devrait te convenir
Dis moi !!!
Jacky
Le #18031951
Re...
Voir message précèdent

--
Salutations
JJ


"Sunburn" news:
Bonjour,
comment puis-je indiquer plusieurs onglets pour ce code :
with sheets("30_31","30_41") est-il correcte ??
-----
Sub FTS30()
'onglet 30_31
With Sheets("30_31")
'deplacement
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "NA" 'on met la valeur NA en A4
End With
End Sub


-----
Merci.
YANN



Sunburn
Le #18032641
re,
en fait, le nom de l'onglet n'a pas de relation avec une suite logique, donc
je vais peut etre opter pour la solution de Corto, qui a première vu, je
trouve moins complexe.
en fait, j'ai 4 et uniquement 4 onglets pour lesquels je veux ce traitement.
mais de toute façon, ça plante à ...clearcontents.
Estc-e que ça a à voir avec ma protection de classeur ?
YANN

"FFO" a écrit :

Salut à toi

Il faut mettre :

For i = 1 To Sheets.Count
If "30_31,30_41" Like "*" & Sheets(i).Name & "*" Then
With Sheets(i)
'deplacement
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "NA" 'on met la valeur NA en A4
End With
End If
Next

Celà devrait te convenir
Dis moi !!!



Sunburn
Le #18032751
Ok, ça fonctionne très bien. voila mon code :
----
Sub tets2()
ActiveWorkbook.Unprotect
'onglet 30_31
For Each XSH In Sheets(Array("30_31", "30_32"))
'deplacement
With XSH
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
.[E10:E29,H10:H29,M10:M29,A36].ClearContents 'effacement
.[A4] = "#N:A" 'on met la valeur NA en A4
End With
Next XSH
Application.CutCopyMode = False
End Sub
-----
sauf que j'ai ma cellule A36 qui est fusionnée.
J'ai essayé .Unmerge.clearcontents, mais ça marche pas.....
Je comprend pas.
Si tu peux m'aider, merci beaucoup.
YANN

"Corto" a écrit :

Bonjour Sunburn,
Si tu veux effectuer le même traitement sur plusieurs feuilles il faut
plutôt utiliser For Each ...
Sub FTS30()
'onglet 30_31
For Each XSH In Sheets(Array("30", "31"))
'deplacement
With XSH
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "#N:A" 'on met la valeur NA en A4
End With
Next XSH
Application.CutCopyMode = False
End Sub

Corto

Sunburn a écrit :
> Bonjour,
> comment puis-je indiquer plusieurs onglets pour ce code :
> with sheets("30_31","30_41") est-il correcte ??
> -----
>
>> Sub FTS30()
>> 'onglet 30_31
>> With Sheets("30_31")
>> 'deplacement
>> .[H10:H29].Copy
>> .[F10].PasteSpecial Paste:=xlPasteValues
>> Application.CutCopyMode = False
>> .[E10:E29,H10:H29].ClearContents 'effacement
>> .[A4] = "NA" 'on met la valeur NA en A4
>> End With
>> End Sub
>>
> -----
> Merci.
> YANN
>
>



Sunburn
Le #18032741
Jacky,
j'avais remis un post car je ne voyais plus ta réponse, et ne voulant pas
tomber dans les abimes du forums, j'ai reposté.
J'ai vu ta réponse, mais mon truc c'est que y'a pas de suite logique des
onglets, et je veux en sélectionner certains, pas en exclure certains.
peut etre dois-je adapter ton code :
if sh.name = "feuil1", "feuil2", ...
sinon, le code de corto m'a l'air pas mal.
YANN

"Jacky" a écrit :

Re...
Voir message précèdent

--
Salutations
JJ


"Sunburn" news:
> Bonjour,
> comment puis-je indiquer plusieurs onglets pour ce code :
> with sheets("30_31","30_41") est-il correcte ??
> -----
>> Sub FTS30()
>> 'onglet 30_31
>> With Sheets("30_31")
>> 'deplacement
>> .[H10:H29].Copy
>> .[F10].PasteSpecial Paste:=xlPasteValues
>> Application.CutCopyMode = False
>> .[E10:E29,H10:H29].ClearContents 'effacement
>> .[A4] = "NA" 'on met la valeur NA en A4
>> End With
>> End Sub
> -----
> Merci.
> YANN
>





FFO
Le #18032721
Rebonjour à toi

Ma proposition n'est pas du tout basé sur une suite logique
Il suffit simplement de lister tes Onglets sous cette forme :

30_31,30_41,32_58 etc.... dans la ligne :

If "30_31,30_41,32_58" Like "*" & Sheets(i).Name & "*" Then

Tous les Onglets listés seront inclus dans la procédure qui suit

Tu peux même faire appel à une cellule dans laquelle tu listeras tes Onglets
de la même façon et d'écrire la ligne d'instruction ainsi (pour A1):

If Range("A1") Like "*" & Sheets(i).Name & "*" Then

Pour modifier tes cellules dans une feuille il est indispensable de la
dévérouiller

Espérant avoir répondu à tes attentes
Dis moi !!!
FFO
Le #18032941
Rebonjour à toi
Si tu cherches simplement à vider les valeurs de tes cellules
mets plutôt cette ligne :

.[E10:E29,H10:H29,M10:M29,A36].Value = ""

Celà devrait être identique
Dis moi !!!
Corto
Le #18032931
Bonjour Sunburn,
Si c'est toujours la même cellule qui est fusionnée, tu peux re mplacer
.[E10:E29,H10:H29,M10:M29,A36].ClearContents 'effacement
par
.[E10:E29,H10:H29,M10:M29].ClearContents 'effacement
.[A36].MergeArea.ClearContents
Sinon la meilleure solution est de défusionner toutes les cellules d e la
feuille au début de la procédure par
ActiveSheet.Cells.UnMerge

Corto

Sunburn a écrit :
Ok, ça fonctionne très bien. voila mon code :
----
Sub tets2()
ActiveWorkbook.Unprotect
'onglet 30_31
For Each XSH In Sheets(Array("30_31", "30_32"))
'deplacement
With XSH
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
.[E10:E29,H10:H29,M10:M29,A36].ClearContents 'effacement
.[A4] = "#N:A" 'on met la valeur NA en A4
End With
Next XSH
Application.CutCopyMode = False
End Sub
-----
sauf que j'ai ma cellule A36 qui est fusionnée.
J'ai essayé .Unmerge.clearcontents, mais ça marche pas.....
Je comprend pas.
Si tu peux m'aider, merci beaucoup.
YANN

"Corto" a écrit :


Bonjour Sunburn,
Si tu veux effectuer le même traitement sur plusieurs feuilles il faut
plutôt utiliser For Each ...
Sub FTS30()
'onglet 30_31
For Each XSH In Sheets(Array("30", "31"))
'deplacement
With XSH
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "#N:A" 'on met la valeur NA en A4
End With
Next XSH
Application.CutCopyMode = False
End Sub

Corto

Sunburn a écrit :

Bonjour,
comment puis-je indiquer plusieurs onglets pour ce code :
with sheets("30_31","30_41") est-il correcte ??
-----


Sub FTS30()
'onglet 30_31
With Sheets("30_31")
'deplacement
.[H10:H29].Copy
.[F10].PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.[E10:E29,H10:H29].ClearContents 'effacement
.[A4] = "NA" 'on met la valeur NA en A4
End With
End Sub




-----
Merci.
YANN









Sunburn
Le #18032901
Ok, ça marche, et effectivement, la defusion n'est pas envisageable, donc
j'utilise le 1).
Merci.
YANN

"Corto" a écrit :

Bonjour Sunburn,
Si c'est toujours la même cellule qui est fusionnée, tu peux remplacer
.[E10:E29,H10:H29,M10:M29,A36].ClearContents 'effacement
par
.[E10:E29,H10:H29,M10:M29].ClearContents 'effacement
.[A36].MergeArea.ClearContents
Sinon la meilleure solution est de défusionner toutes les cellules de la
feuille au début de la procédure par
ActiveSheet.Cells.UnMerge

Corto

Sunburn a écrit :
> Ok, ça fonctionne très bien. voila mon code :
> ----
> Sub tets2()
> ActiveWorkbook.Unprotect
> 'onglet 30_31
> For Each XSH In Sheets(Array("30_31", "30_32"))
> 'deplacement
> With XSH
> .[H10:H29].Copy
> .[F10].PasteSpecial Paste:=xlPasteValues
> .[E10:E29,H10:H29,M10:M29,A36].ClearContents 'effacement
> .[A4] = "#N:A" 'on met la valeur NA en A4
> End With
> Next XSH
> Application.CutCopyMode = False
> End Sub
> -----
> sauf que j'ai ma cellule A36 qui est fusionnée.
> J'ai essayé .Unmerge.clearcontents, mais ça marche pas.....
> Je comprend pas.
> Si tu peux m'aider, merci beaucoup.
> YANN
>
> "Corto" a écrit :
>
>
>> Bonjour Sunburn,
>> Si tu veux effectuer le même traitement sur plusieurs feuilles il faut
>> plutôt utiliser For Each ...
>> Sub FTS30()
>> 'onglet 30_31
>> For Each XSH In Sheets(Array("30", "31"))
>> 'deplacement
>> With XSH
>> .[H10:H29].Copy
>> .[F10].PasteSpecial Paste:=xlPasteValues
>> .[E10:E29,H10:H29].ClearContents 'effacement
>> .[A4] = "#N:A" 'on met la valeur NA en A4
>> End With
>> Next XSH
>> Application.CutCopyMode = False
>> End Sub
>>
>> Corto
>>
>> Sunburn a écrit :
>>
>>> Bonjour,
>>> comment puis-je indiquer plusieurs onglets pour ce code :
>>> with sheets("30_31","30_41") est-il correcte ??
>>> -----
>>>
>>>
>>>> Sub FTS30()
>>>> 'onglet 30_31
>>>> With Sheets("30_31")
>>>> 'deplacement
>>>> .[H10:H29].Copy
>>>> .[F10].PasteSpecial Paste:=xlPasteValues
>>>> Application.CutCopyMode = False
>>>> .[E10:E29,H10:H29].ClearContents 'effacement
>>>> .[A4] = "NA" 'on met la valeur NA en A4
>>>> End With
>>>> End Sub
>>>>
>>>>
>>> -----
>>> Merci.
>>> YANN
>>>
>>>
>>>



Jacky
Le #18033411
Re...
sinon, le code de corto m'a l'air pas mal.


Tout à fait.
--
Salutations
JJ


"Sunburn" news:
Jacky,
j'avais remis un post car je ne voyais plus ta réponse, et ne voulant pas
tomber dans les abimes du forums, j'ai reposté.
J'ai vu ta réponse, mais mon truc c'est que y'a pas de suite logique des
onglets, et je veux en sélectionner certains, pas en exclure certains.
peut etre dois-je adapter ton code :
if sh.name = "feuil1", "feuil2", ...
sinon, le code de corto m'a l'air pas mal.
YANN

"Jacky" a écrit :

Re...
Voir message précèdent

--
Salutations
JJ


"Sunburn" news:
> Bonjour,
> comment puis-je indiquer plusieurs onglets pour ce code :
> with sheets("30_31","30_41") est-il correcte ??
> -----
>> Sub FTS30()
>> 'onglet 30_31
>> With Sheets("30_31")
>> 'deplacement
>> .[H10:H29].Copy
>> .[F10].PasteSpecial Paste:=xlPasteValues
>> Application.CutCopyMode = False
>> .[E10:E29,H10:H29].ClearContents 'effacement
>> .[A4] = "NA" 'on met la valeur NA en A4
>> End With
>> End Sub
> -----
> Merci.
> YANN
>







Publicité
Poster une réponse
Anonyme