[Excel VBA] empêcher suppresion cellules
Résolu/Fermé
Gorion87
Messages postés
55
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
28 février 2011
-
Modifié par Gorion87 le 10/01/2011 à 10:32
Gorion87 Messages postés 55 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 28 février 2011 - 10 janv. 2011 à 13:52
Gorion87 Messages postés 55 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 28 février 2011 - 10 janv. 2011 à 13:52
A voir également:
- [Excel VBA] empêcher suppresion cellules
- Liste déroulante excel - Guide
- Excel additionner des cellules - Guide
- Verrouiller cellules excel - Guide
- Formule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
5 réponses
Utilisateur anonyme
10 janv. 2011 à 11:35
10 janv. 2011 à 11:35
Bonjour Gorion87,
J'ai compris que quand on supprime une ligne, les données source remontent, une fois qu'elles ont atteint la ligne 28, l'utilisateur ne doit plus supprimer de ligne.
Est-ce que tu ne peux pas créer un test sur la ligne 28 avec deux ou trois cellules (caractéristiques) de tes données sources afin d'arrêter la macro?
Exemple
sub Mamcro
if cells(28,1) ="data1" or cells(28,3)= "data2" or cells(28,5)= "data3" then Exit sub
end sub
Cordialement
J'ai compris que quand on supprime une ligne, les données source remontent, une fois qu'elles ont atteint la ligne 28, l'utilisateur ne doit plus supprimer de ligne.
Est-ce que tu ne peux pas créer un test sur la ligne 28 avec deux ou trois cellules (caractéristiques) de tes données sources afin d'arrêter la macro?
Exemple
sub Mamcro
if cells(28,1) ="data1" or cells(28,3)= "data2" or cells(28,5)= "data3" then Exit sub
end sub
Cordialement
Gorion87
Messages postés
55
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
28 février 2011
19
10 janv. 2011 à 11:50
10 janv. 2011 à 11:50
Bonjour AGI67.fr,
Je ne comprend pas trop ta macro sachant que les cellules sont vides à l'origine tant que l'utilisateur n'a pas fait de choix dans la liste déroulante et qu'il peut les supprimer/ajouter comme bon lui semble afin de dimensionner son nombre de lignes en fonction de ses besoins.
En fait ce sont les 2 premières cellules fusionnées qui contiennent des listes déroulantes :
- B28:D28 => 1 cellule (ex de liste déroulante : Jean, Simon, Robert, Romain...)
- E28 => non fusionnée (ex : Brun, Blond, Roux).
Si ca peut t'éclairer et moi aussi pour ta macro par la même occasion :)
Merci.
Je ne comprend pas trop ta macro sachant que les cellules sont vides à l'origine tant que l'utilisateur n'a pas fait de choix dans la liste déroulante et qu'il peut les supprimer/ajouter comme bon lui semble afin de dimensionner son nombre de lignes en fonction de ses besoins.
En fait ce sont les 2 premières cellules fusionnées qui contiennent des listes déroulantes :
- B28:D28 => 1 cellule (ex de liste déroulante : Jean, Simon, Robert, Romain...)
- E28 => non fusionnée (ex : Brun, Blond, Roux).
Si ca peut t'éclairer et moi aussi pour ta macro par la même occasion :)
Merci.
Gorion87
Messages postés
55
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
28 février 2011
19
10 janv. 2011 à 12:25
10 janv. 2011 à 12:25
https://www.cjoint.com/?0bkmwZrXaFF
Voici le lien.
Les zones blanches contiennent normalement des données mais pour des raisons de confidentialité elles ont été supprimées.
Concernant les données du tableau restantes ce sont évidemment des exemples.
Les "END" sont normalement en blanc afin de ne pas être visible.
Merci beaucoup de ton aide.
Voici le lien.
Les zones blanches contiennent normalement des données mais pour des raisons de confidentialité elles ont été supprimées.
Concernant les données du tableau restantes ce sont évidemment des exemples.
Les "END" sont normalement en blanc afin de ne pas être visible.
Merci beaucoup de ton aide.
Utilisateur anonyme
10 janv. 2011 à 13:27
10 janv. 2011 à 13:27
C'est mieux avec l'exemple.
Je te propose ta macro un peu modifiée:
Sub Suppr_ligne()
Application.ScreenUpdating = False
Range("B44").End(xlUp).Select
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(0, 11)).Select
a = ActiveCell.Address
If Right(ActiveCell.Address, 2) <> 28 Then
Selection.Delete
End If
If Right(ActiveCell.Address, 2) = 28 Then
For i = 2 To 11
Cells(28, i) = ""
Next i
End If
Range("B28").Select
Application.ScreenUpdating = True
End Sub
Tiens moi au courant
Cdlmnt
Patrice
Je te propose ta macro un peu modifiée:
Sub Suppr_ligne()
Application.ScreenUpdating = False
Range("B44").End(xlUp).Select
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(0, 11)).Select
a = ActiveCell.Address
If Right(ActiveCell.Address, 2) <> 28 Then
Selection.Delete
End If
If Right(ActiveCell.Address, 2) = 28 Then
For i = 2 To 11
Cells(28, i) = ""
Next i
End If
Range("B28").Select
Application.ScreenUpdating = True
End Sub
Tiens moi au courant
Cdlmnt
Patrice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Gorion87
Messages postés
55
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
28 février 2011
19
10 janv. 2011 à 13:52
10 janv. 2011 à 13:52
Merci beaucoup sincèrement, c'est parfait ca fonctionne nickel !!!!!
Ce site est vraiment génial et c'est grâce à des personnes généreuses comme toi que je peux avancer dans mon boulot !!
Merci encore et bonne fin de journée :)
Ce site est vraiment génial et c'est grâce à des personnes généreuses comme toi que je peux avancer dans mon boulot !!
Merci encore et bonne fin de journée :)