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

Effacer des données dans des cellules non contiguës

10 réponses
Avatar
Bruno65
Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno

10 réponses

Avatar
Youky
salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble des
cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10, L10,
G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20, H20, L20,
G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28, G30, H30, L30,
G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38, L38, G40, H40, L40,
G42, H42, L42, G44, H44, L44, G46, H46, L46, G48, H48, L48, G50, H50, L50,
G52, H52, L52, G54, H54, L54, G56, H56, L56, G58, H58, L58, G60, H60, L60,
G62, H62, L62, G64, H64, L64, G66, H66, L66, G68, H68, L68, G70, H70, L70,
G72, H72, L72, G74, H74, L74, G76, H76, L76, G78, H78, L78, G80, H80, L80,
G82, H82, L82, G84, H84, L84, G86, H86, L86, G88, H88, L88, G90, H90, L90,
G92, H92, L92, G94, H94, L94, G96, H96, L96, G98, H98, L98, G100, H100,
L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno



Avatar
Bruno65
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible
de faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble des
cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10, L10,
G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20, H20, L20,
G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28, G30, H30, L30,
G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38, L38, G40, H40, L40,
G42, H42, L42, G44, H44, L44, G46, H46, L46, G48, H48, L48, G50, H50, L50,
G52, H52, L52, G54, H54, L54, G56, H56, L56, G58, H58, L58, G60, H60, L60,
G62, H62, L62, G64, H64, L64, G66, H66, L66, G68, H68, L68, G70, H70, L70,
G72, H72, L72, G74, H74, L74, G76, H76, L76, G78, H78, L78, G80, H80, L80,
G82, H82, L82, G84, H84, L84, G86, H86, L86, G88, H88, L88, G90, H90, L90,
G92, H92, L92, G94, H94, L94, G96, H96, L96, G98, H98, L98, G100, H100,
L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno







Avatar
Youky
For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno








Avatar
Bruno65
Je sens qu'on touche au but !!!

ça fonctionne mais en me demandant confirmation pour chaque groupe de
trois cellules de la même ligne....
Le souci est qu'il y en a 300, donc 150 confirmations à donner !
En fait ce qui serait parfait c'est un message type :
"Ceci effacera définitivement les données. Confirmez-vous?",
avec quatre boutons :
Réponse "oui" => effacement de la ligne 2 puis confirmations successives
ligne par ligne ou refus par le bouton "non"
Réponse "tout" => effacement de l'ensemble des lignes
Réponse "annuler" => fermeture de la boîte

Si ce n'était pas possible, l'effacement total me serait plus utile...

Merci encore pour cette aide aussi rapide qu'efficace !



For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno










Avatar
JB
Bonsoir,

For Each j In Array(7, 8, 12)
For i = 2 To Cells(65000, j).End(xlUp).Row Step 2
Cells(i, j).ClearContents
Next i
Next j

Cordialement JB


On 15 avr, 18:43, Bruno65 wrote:
Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de m es
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, m ais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon ...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents

Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G22 0,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G23 0,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G24 0,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G25 0,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G26 0,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G27 0,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G28 0,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G29 0,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G30 0,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub

Cordialement,

Bruno


Avatar
JB
Avec confirmation:

[H2].Select
For Each j In Array(7, 8, 12)
For i = 2 To Cells(65000, j).End(xlUp).Row Step 2
Union(Selection, Cells(i, j)).Select
Next i
Next j
If MsgBox("Etes vous sur", vbYesNo) = vbYes Then
Selection.ClearContents

JB


On 15 avr, 18:43, Bruno65 wrote:
Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de m es
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, m ais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon ...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents

Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G22 0,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G23 0,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G24 0,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G25 0,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G26 0,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G27 0,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G28 0,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G29 0,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G30 0,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub

Cordialement,

Bruno


Avatar
MichDenis
Sub test()

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' à adapter
x = .Range("G:G,H:H,L:L").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
If MsgBox("Voulez-vous supprimer " & x / 2 & " lignes des colonnes" & _
" G, H, L, K . Désirez-vous continuer?", vbInformation + vbYesNo, _
"Supprimer ligne") = vbYes Then

For k = 2 To x Step 2
.Range("G" & k & ":H" & k) = ""
.Range("L" & k) = ""
Next
Else
MsgBox "Opération annulée."
End If
End With
End Sub





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

Je sens qu'on touche au but !!!

ça fonctionne mais en me demandant confirmation pour chaque groupe de
trois cellules de la même ligne....
Le souci est qu'il y en a 300, donc 150 confirmations à donner !
En fait ce qui serait parfait c'est un message type :
"Ceci effacera définitivement les données. Confirmez-vous?",
avec quatre boutons :
Réponse "oui" => effacement de la ligne 2 puis confirmations successives
ligne par ligne ou refus par le bouton "non"
Réponse "tout" => effacement de l'ensemble des lignes
Réponse "annuler" => fermeture de la boîte

Si ce n'était pas possible, l'effacement total me serait plus utile...

Merci encore pour cette aide aussi rapide qu'efficace !



For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno










Avatar
Bruno65
Bonsoir Michel et merci à toi et à tous ceux qui me proposent des
solutions...

J'ai collé ton code dans mon module "Efface", mais j'ai une erreur
d'exécution 9 "l'indice n'appartient pas à la sélection" à propos de la
ligne où tu as marqué "à adapter"
Je ne comprends pas ce que ça veut dire...
La feuille dans laquelle j'ai besoin de faire tourner la macro est bien
nommée "Feuil1" dans la fenêtre "projet" ; je ne sais pas si c'est un
élément de réponse...



Sub test()

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' à adapter
x = .Range("G:G,H:H,L:L").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
If MsgBox("Voulez-vous supprimer " & x / 2 & " lignes des colonnes" & _
" G, H, L, K . Désirez-vous continuer?", vbInformation + vbYesNo, _
"Supprimer ligne") = vbYes Then

For k = 2 To x Step 2
.Range("G" & k & ":H" & k) = ""
.Range("L" & k) = ""
Next
Else
MsgBox "Opération annulée."
End If
End With
End Sub





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

Je sens qu'on touche au but !!!

ça fonctionne mais en me demandant confirmation pour chaque groupe de
trois cellules de la même ligne....
Le souci est qu'il y en a 300, donc 150 confirmations à donner !
En fait ce qui serait parfait c'est un message type :
"Ceci effacera définitivement les données. Confirmez-vous?",
avec quatre boutons :
Réponse "oui" => effacement de la ligne 2 puis confirmations successives
ligne par ligne ou refus par le bouton "non"
Réponse "tout" => effacement de l'ensemble des lignes
Réponse "annuler" => fermeture de la boîte

Si ce n'était pas possible, l'effacement total me serait plus utile...

Merci encore pour cette aide aussi rapide qu'efficace !



For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno













Avatar
MichDenis
Tu dois adapter le nom de la feuille.


"Bruno65" a écrit dans le message de news:
%
Bonsoir Michel et merci à toi et à tous ceux qui me proposent des
solutions...

J'ai collé ton code dans mon module "Efface", mais j'ai une erreur
d'exécution 9 "l'indice n'appartient pas à la sélection" à propos de la
ligne où tu as marqué "à adapter"
Je ne comprends pas ce que ça veut dire...
La feuille dans laquelle j'ai besoin de faire tourner la macro est bien
nommée "Feuil1" dans la fenêtre "projet" ; je ne sais pas si c'est un
élément de réponse...



Sub test()

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' à adapter
x = .Range("G:G,H:H,L:L").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
If MsgBox("Voulez-vous supprimer " & x / 2 & " lignes des colonnes" & _
" G, H, L, K . Désirez-vous continuer?", vbInformation + vbYesNo, _
"Supprimer ligne") = vbYes Then

For k = 2 To x Step 2
.Range("G" & k & ":H" & k) = ""
.Range("L" & k) = ""
Next
Else
MsgBox "Opération annulée."
End If
End With
End Sub





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

Je sens qu'on touche au but !!!

ça fonctionne mais en me demandant confirmation pour chaque groupe de
trois cellules de la même ligne....
Le souci est qu'il y en a 300, donc 150 confirmations à donner !
En fait ce qui serait parfait c'est un message type :
"Ceci effacera définitivement les données. Confirmez-vous?",
avec quatre boutons :
Réponse "oui" => effacement de la ligne 2 puis confirmations successives
ligne par ligne ou refus par le bouton "non"
Réponse "tout" => effacement de l'ensemble des lignes
Réponse "annuler" => fermeture de la boîte

Si ce n'était pas possible, l'effacement total me serait plus utile...

Merci encore pour cette aide aussi rapide qu'efficace !



For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno













Avatar
Bruno65
Ok j'ai compris : le nom de la feuille tel qu'il est dans l'onglet du
classeur et pas dans VBA...

Un truc bizarre : la box affiche "Voulez-vous supprimer 150.5 lignes.."
au lieu de "150"...
Ce n'est pas grave puisque ça fonctionne. ;-)

J'ai aussi testé les propositions de JB, ça a été un peu plus long parce
que je suis vraiment niveau 0 en VBA et j'ai mis un moment à comprendre
ce qui manquait : Sub, end if, et end sub.... donc ça marche aussi et en
prime j'ai acquis quelques rudiments de base, c'est Bysance !!!

Merci infiniment à vous trois, Michel, JB et Youki, et vu l'heure
tardive je vous souhaite une très bonne nuit !


Cordialement,

Bruno



Tu dois adapter le nom de la feuille.


"Bruno65" a écrit dans le message de news:
%
Bonsoir Michel et merci à toi et à tous ceux qui me proposent des
solutions...

J'ai collé ton code dans mon module "Efface", mais j'ai une erreur
d'exécution 9 "l'indice n'appartient pas à la sélection" à propos de la
ligne où tu as marqué "à adapter"
Je ne comprends pas ce que ça veut dire...
La feuille dans laquelle j'ai besoin de faire tourner la macro est bien
nommée "Feuil1" dans la fenêtre "projet" ; je ne sais pas si c'est un
élément de réponse...



Sub test()

Application.ScreenUpdating = False
With Worksheets("Feuil1") ' à adapter
x = .Range("G:G,H:H,L:L").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
If MsgBox("Voulez-vous supprimer " & x / 2 & " lignes des colonnes" & _
" G, H, L, K . Désirez-vous continuer?", vbInformation + vbYesNo, _
"Supprimer ligne") = vbYes Then

For k = 2 To x Step 2
.Range("G" & k & ":H" & k) = ""
.Range("L" & k) = ""
Next
Else
MsgBox "Opération annulée."
End If
End With
End Sub





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

Je sens qu'on touche au but !!!

ça fonctionne mais en me demandant confirmation pour chaque groupe de
trois cellules de la même ligne....
Le souci est qu'il y en a 300, donc 150 confirmations à donner !
En fait ce qui serait parfait c'est un message type :
"Ceci effacera définitivement les données. Confirmez-vous?",
avec quatre boutons :
Réponse "oui" => effacement de la ligne 2 puis confirmations successives
ligne par ligne ou refus par le bouton "non"
Réponse "tout" => effacement de l'ensemble des lignes
Réponse "annuler" => fermeture de la boîte

Si ce n'était pas possible, l'effacement total me serait plus utile...

Merci encore pour cette aide aussi rapide qu'efficace !



For k = 2 To [G65536].End(xlUp).Row Step 2
rep = MsgBox("Voulez supprimer G H L sur la ligne " & k, vbYesNoCancel _
+ vbExclamation + vbDefaultButton2, "Supprimer ligne")
If rep = vbCancel Then Exit Sub
If rep = vbYes Then
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
End If
Next

ceci doit encore faire l'affaire
Youky

"Bruno65" a écrit dans le message de news:
%
Salut Youky,

c'est exactement ce que je voulais, c'est vraiment top !
Merci beaucoup.

Tant que j'y suis, et sans vouloir abuser, est-ce qu'il serait possible de
faire apparaître une boîte de dialogue demandant confirmation de
l'effacement, pour éviter les manoeuvres intempestives ?

Bruno


salut,
ceci doit faire l'affaire
Youky

For k = 2 To [G65536].End(xlUp).Row Step 2
Range("G" & k & ":H" & k) = ""
Range("L" & k) = ""
Next

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

Bonjour et merci d'avance pour l'aide que vous voudrez bien m'apporter !

Voici mon problème :
j'ai fabriqué une feuille pour traiter une compétition UNSS.
Je voudrais pouvoir effacer uniquement certaines cellules (une ligne sur
deux à partir de la ligne 2, et uniquement pour les colonnes G,H et L.
J'ai tenté de créer une macro,tout d'abord sur une petite partie de mes
cellules, puis j'ai "bidouillé" pour concaténer la liste de l'ensemble
des cellules à effacer.

Dans VBA, dans lequel je suis néophyte, la longueur de ma liste étant
apparemment trop longue, j'ai eu un affichage style "séparateur de liste
attendu". J'ai donc essayé de scinder la liste en trois sélections, mais
ça ne fonctionne toujours pas...
En plus il doit y avoir une solution 100 fois plus élégante, mais bon...

Voici le code de ma macro "bidouillée":

Sub Efface_temps_balises()
'
' Efface_temps_balises Macro
' Macro enregistrée le 15/04/2007 par Bruno
'

Range("G2 , H2, L2, G4, H4, L4, G6, H6, L6, G8, H8, L8, G10, H10,
L10, G12, H12, L12, G14, H14, L14, G16, H16, L16, G18, H18, L18, G20,
H20, L20, G22, H22, L22, G24, H24, L24, G26, H26, L26, G28, H28, L28,
G30, H30, L30, G32, H32, L32, G34, H34, L34, G36, H36, L36, G38, H38,
L38, G40, H40, L40, G42, H42, L42, G44, H44, L44, G46, H46, L46, G48,
H48, L48, G50, H50, L50, G52, H52, L52, G54, H54, L54, G56, H56, L56,
G58, H58, L58, G60, H60, L60, G62, H62, L62, G64, H64, L64, G66, H66,
L66, G68, H68, L68, G70, H70, L70, G72, H72, L72, G74, H74, L74, G76,
H76, L76, G78, H78, L78, G80, H80, L80, G82, H82, L82, G84, H84, L84,
G86, H86, L86, G88, H88, L88, G90, H90, L90, G92, H92, L92, G94, H94,
L94, G96, H96, L96, G98, H98, L98, G100, H100, L100").Select
Selection.ClearContents

Range("G102, H102, L102, G104, H104, L104, G106, H106, L106, G108,
H108, L108, G110, H110, L110, G112, H112, L112, G114, H114, L114, G116,
H116, L116, G118, H118, L118, G120, H120, L120, G122, H122, L122, G124,
H124, L124, G126, H126, L126, G128, H128, L128, G130, H130, L130,
G132,H132,L132,G134,H134,L134,G136,H136,L136,G138,H138,L138,G140,H140,
L140,G142,H142,L142,G144,H144,L144,G146,H146,L146,G148,H148,L148,G150,
H150,L150,G152,H152,L152,G154,H154,L154,G156,H156,L156,G158,H158,L158,
G160,H160,L160,G162,H162,L162,G164,H164,L164,G166,H166,L166,G168,H168
L168,G170,H170,L170,G172,H172,L172,G174,H174,L174,G176,H176,L176,G178
H178,L178,G180,H180,L180,G182,H182,L182,G184,H184,L184,G186,H186,L186
G188,H188,L188,G190,H190,L190,G192,H192,L192,G194,H194,L194,G196,H196
L196,G198,H198,L198,G200,H200,L200").Select
Selection.ClearContents


Range("G202,H202,L202,G204,H204,L204,G206,H206,L206,G208,H208,L208,G210,
H210,L210,G212,H212,L212,G214,H214,L214,G216,H216,L216,G218,H218,L218,G220,
H220,L220,G222,H222,L222,G224,H224,L224,G226,H226,L226,G228,H228,L228,G230,
H230,L230,G232,H232,L232,G234,H234,L234,G236,H236,L236,G238,H238,L238,G240,
H240,L240,G242,H242,L242,G244,H244,L244,G246,H246,L246,G248,H248,L248,G250,
H250,L250,G252,H252,L252,G254,H254,L254,G256,H256,L256,G258,H258,L258,G260,
H260,L260,G262,H262,L262,G264,H264,L264,G266,H266,L266,G268,H268,L268,G270,
H270,L270,G272,H272,L272,G274,H274,L274,G276,H276,L276,G278,H278,L278,G280,
H280,L280,G282,H282,L282,G284,H284,L284,G286,H286,L286,G288,H288,L288,G290,
H290,L290,G292,H292,L292,G294,H294,L294,G296,H296,L296,G298,H298,L298,G300,
H300,L300").Select
Selection.ClearContents

Range("Y16").Select
End Sub


Cordialement,

Bruno