Private sub erreur()
If Not Intersect (Range("A1:A200"), Selection) Is Nothing then
With Selection
.Range("D1,G1, J1:M1").ClearContents
.Range("B1").value="ANNULE"
End With
End If
End Sub
pour supprimer des données dans un tableau.
Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais
pas quand j'en selectionne plusieurs (c'est toujours la ligne de la
cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute
changer ça, non ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. Quand tu écris : Selection.Range("D1"), ce qui est pris en compte, c'est la colonne D et la première ligne de la sélection. Essaie :
If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then Intersect(Selection.Resize(, 13), Range("D:D, G:G, J:M")).ClearContents Intersect(Selection.Resize(, 2), Range("B:B")) = "ANNULE" End If
Cordialement. Daniel
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?
Merci d'avance et bonne journée à tous.
Pierre.M
Bonjour.
Quand tu écris :
Selection.Range("D1"), ce qui est pris en compte, c'est la colonne D et
la première ligne de la sélection. Essaie :
If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then
Intersect(Selection.Resize(, 13), Range("D:D, G:G, J:M")).ClearContents
Intersect(Selection.Resize(, 2), Range("B:B")) = "ANNULE"
End If
Cordialement.
Daniel
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur()
If Not Intersect (Range("A1:A200"), Selection) Is Nothing then
With Selection
.Range("D1,G1, J1:M1").ClearContents
.Range("B1").value="ANNULE"
End With
End If
End Sub
pour supprimer des données dans un tableau.
Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas
quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule
active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute
changer ça, non ?
Bonjour. Quand tu écris : Selection.Range("D1"), ce qui est pris en compte, c'est la colonne D et la première ligne de la sélection. Essaie :
If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then Intersect(Selection.Resize(, 13), Range("D:D, G:G, J:M")).ClearContents Intersect(Selection.Resize(, 2), Range("B:B")) = "ANNULE" End If
Cordialement. Daniel
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?
Merci d'avance et bonne journée à tous.
Pierre.M
FFO
Salut à toi
Les lignes : .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE"
traite seulement la 1° ligne de la sélection que représente le chiffre 1
Si tu veux traiter toutes les lignes d'une sélection utilises plutôt ceci :
Sub erreur() If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then With Selection For i = 1 To Selection.Rows.Count .Range("D" & i & ",G" & i & ", J" & i & ":M" & i & "").ClearContents .Range("B" & i).Value = "ANNULE" Next End With End If End Sub
Celà devrait mieux convenir
Dis moi !!!!!!
Salut à toi
Les lignes :
.Range("D1,G1, J1:M1").ClearContents
.Range("B1").value="ANNULE"
traite seulement la 1° ligne de la sélection que représente le chiffre 1
Si tu veux traiter toutes les lignes d'une sélection utilises plutôt ceci :
Sub erreur()
If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then
With Selection
For i = 1 To Selection.Rows.Count
.Range("D" & i & ",G" & i & ", J" & i & ":M" & i & "").ClearContents
.Range("B" & i).Value = "ANNULE"
Next
End With
End If
End Sub
Les lignes : .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE"
traite seulement la 1° ligne de la sélection que représente le chiffre 1
Si tu veux traiter toutes les lignes d'une sélection utilises plutôt ceci :
Sub erreur() If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then With Selection For i = 1 To Selection.Rows.Count .Range("D" & i & ",G" & i & ", J" & i & ":M" & i & "").ClearContents .Range("B" & i).Value = "ANNULE" Next End With End If End Sub
Celà devrait mieux convenir
Dis moi !!!!!!
FS
Bonjour,
Tu peux aussi utiliser une boucle For..Each :
Private Sub erreur() Dim cell As Range If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then For Each cell In Selection cell.Range("D1,G1, J1:M1").ClearContents cell.Range("B1").Value = "ANNULE" Next End If End Sub
NB : (Juste au cas où...) Comme tu as déclaré ta procédure Private elle n'apparaît pas dans la liste affichée (dans le tableur) par Alt+F8. Cependant, comme c'est assez pratique de tester "en situation", si tu tapes dans la boite de dialogue le nom de la procédure (ici 'erreur') le bouton Exécuter deviendra disponible et tu pourras tester ton code.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Pierre.M a écrit :
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection ..Range("D1,G1, J1:M1").ClearContents ..Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?
Merci d'avance et bonne journée à tous.
Pierre.M
Bonjour,
Tu peux aussi utiliser une boucle For..Each :
Private Sub erreur()
Dim cell As Range
If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then
For Each cell In Selection
cell.Range("D1,G1, J1:M1").ClearContents
cell.Range("B1").Value = "ANNULE"
Next
End If
End Sub
NB : (Juste au cas où...) Comme tu as déclaré ta procédure Private elle
n'apparaît pas dans la liste affichée (dans le tableur) par Alt+F8.
Cependant, comme c'est assez pratique de tester "en situation", si tu
tapes dans la boite de dialogue le nom de la procédure (ici 'erreur') le
bouton Exécuter deviendra disponible et tu pourras tester ton code.
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Pierre.M a écrit :
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur()
If Not Intersect (Range("A1:A200"), Selection) Is Nothing then
With Selection
..Range("D1,G1, J1:M1").ClearContents
..Range("B1").value="ANNULE"
End With
End If
End Sub
pour supprimer des données dans un tableau.
Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais
pas quand j'en selectionne plusieurs (c'est toujours la ligne de la
cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute
changer ça, non ?
Private Sub erreur() Dim cell As Range If Not Intersect(Range("A1:A200"), Selection) Is Nothing Then For Each cell In Selection cell.Range("D1,G1, J1:M1").ClearContents cell.Range("B1").Value = "ANNULE" Next End If End Sub
NB : (Juste au cas où...) Comme tu as déclaré ta procédure Private elle n'apparaît pas dans la liste affichée (dans le tableur) par Alt+F8. Cependant, comme c'est assez pratique de tester "en situation", si tu tapes dans la boite de dialogue le nom de la procédure (ici 'erreur') le bouton Exécuter deviendra disponible et tu pourras tester ton code.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Pierre.M a écrit :
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection ..Range("D1,G1, J1:M1").ClearContents ..Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?
Merci d'avance et bonne journée à tous.
Pierre.M
Pierre.M
Merci à tous les 3. Mon problème est résolu et de 3 manières différentes en plus ! Quoi de mieux pour apprendre ? Bonne soirée.
Pierre.M
On 2009-12-11 10:38:06 +0100, Pierre.M said:
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?
Merci d'avance et bonne journée à tous.
Pierre.M
Merci à tous les 3.
Mon problème est résolu et de 3 manières différentes en plus !
Quoi de mieux pour apprendre ?
Bonne soirée.
Pierre.M
On 2009-12-11 10:38:06 +0100, Pierre.M said:
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur()
If Not Intersect (Range("A1:A200"), Selection) Is Nothing then
With Selection
.Range("D1,G1, J1:M1").ClearContents
.Range("B1").value="ANNULE"
End With
End If
End Sub
pour supprimer des données dans un tableau.
Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais
pas quand j'en selectionne plusieurs (c'est toujours la ligne de la
cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute
changer ça, non ?
Merci à tous les 3. Mon problème est résolu et de 3 manières différentes en plus ! Quoi de mieux pour apprendre ? Bonne soirée.
Pierre.M
On 2009-12-11 10:38:06 +0100, Pierre.M said:
Bonjour,
J'utilise une macro du genre (je simplifie...) :
Private sub erreur() If Not Intersect (Range("A1:A200"), Selection) Is Nothing then With Selection .Range("D1,G1, J1:M1").ClearContents .Range("B1").value="ANNULE" End With End If End Sub
pour supprimer des données dans un tableau. Ca fonctionne bien quand je selectionne une ligne de la colonne A, mais pas quand j'en selectionne plusieurs (c'est toujours la ligne de la cellule active qui subit la macro).
Est-ce normal ? Pourquoi (Selection <>ActiveCell) ? On peut sans doute changer ça, non ?