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

Le
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
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
Youky
Le #4446051
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"
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



Bruno65
Le #4446001
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"
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







Youky
Le #4445991
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" %
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"
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








Bruno65
Le #4445941
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" %
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"
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










JB
Le #4445921
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
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


JB
Le #4445911
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
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


MichDenis
Le #4445891
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"
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" %
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"
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










Bruno65
Le #4445871
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"
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" %
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"
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













MichDenis
Le #4445861
Tu dois adapter le nom de la feuille.


"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"
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" %
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"
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













Bruno65
Le #4445831
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" %
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"
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" %
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"
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
















Publicité
Poster une réponse
Anonyme