Selectionner une ligne d'une plage donnée
Fermé
seb
-
24 oct. 2017 à 15:43
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 30 oct. 2017 à 09:01
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 30 oct. 2017 à 09:01
A voir également:
- Selectionner une ligne d'une plage donnée
- Aller à la ligne dans une cellule excel - Guide
- Site de vente en ligne particulier - Guide
- Partager photos en ligne - Guide
- Apparaitre hors ligne instagram - Guide
- Comment faire une liste déroulante dans excel à partir d'une plage nommée ? - Guide
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
24 oct. 2017 à 23:12
24 oct. 2017 à 23:12
Bonjour,
Sélectionner dans quel but ?
En général sélectionner est toujours une mauvaise méthode.
Pour chercher FERIE dans la colonne J la méthode FIND est bien plus rapide qu'une boucle sur toutes les cellules.
Sélectionner dans quel but ?
En général sélectionner est toujours une mauvaise méthode.
Pour chercher FERIE dans la colonne J la méthode FIND est bien plus rapide qu'une boucle sur toutes les cellules.
Bonjour et merci de prendre le temps de me répondre,
En faite, sélectionner les cellules qui ce trouvent en face de "FERIE" me permets de faire 2 choses.
- Soit "FERIE" est présent, alors les cellules sont verrouillées (et donc "immodifiable").
- Soit "FERIE" n'est pas présent, et là, les cellules sont déverrouillées (et donc "modifiable").
cordialement,
Séb
En faite, sélectionner les cellules qui ce trouvent en face de "FERIE" me permets de faire 2 choses.
- Soit "FERIE" est présent, alors les cellules sont verrouillées (et donc "immodifiable").
- Soit "FERIE" n'est pas présent, et là, les cellules sont déverrouillées (et donc "modifiable").
cordialement,
Séb
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 25 oct. 2017 à 16:58
Modifié le 25 oct. 2017 à 16:58
Bonjour,
Essaies :
Pas besoin de sélectionner quoi que ce soit !
Essaies :
Option Explicit Public Sub verrouillage() ' Déclaration des variable Dim plage As Range Dim ferie As Range Dim adresse As String ' Initialisation des varaibles Set plage = ActiveSheet.Range("J7:J21") ' Déverrouiller toutes les cellules (soit la plage G7:H21) plage.Offset(0, -3).Resize(, 2).Locked = False ' Chercher la première cellule contenant FERIE Set ferie = plage.Find("FERIE", , xlValues, xlPart) 'ou .Find("FERIE", , xlValues, xlWhole) 'pour chercher la valeur exacte. If Not ferie Is Nothing Then ' Si elle existe, noter son adresse adresse = ferie.Address ' Déprotéger la feuille ActiveSheet.Unprotect 'Inutile de mettre un mot de passe qui 'apparaît en clair dans la macro !!! Do ' Verrouiller les cellules G:H de la ligne ferie.Offset(0, -3).Resize(, 2).Locked = True ' Chercher le FERIE suivant Set ferie = plage.FindNext(ferie) Loop While ferie.Address <> adresse 'Boucler tant qu'on n'est 'pas revenu à la 1° cellule ' Protéger la feuille ActiveSheet.Protect End If End Sub
Pas besoin de sélectionner quoi que ce soit !
Séb
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
26 oct. 2017 à 10:02
26 oct. 2017 à 10:02
Bonjour,
Je te remercie de ton retour.
Je viens de testé mais, ta proposition, bloque sur cette ligne:
"plage.Offset(0, -3).Resize(, 2).Locked = False"
"Erreur d'exécution '1004':
impossible de définir la propriété Locked de la classe Range"
Je te remercie de ton retour.
Je viens de testé mais, ta proposition, bloque sur cette ligne:
"plage.Offset(0, -3).Resize(, 2).Locked = False"
"Erreur d'exécution '1004':
impossible de définir la propriété Locked de la classe Range"
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
>
Séb
Modifié le 26 oct. 2017 à 12:36
Modifié le 26 oct. 2017 à 12:36
Effectivement, désolé, il faut déprotéger la feuille avant :
Public Sub verrouillage() ' Déclaration des variable Dim plage As Range Dim ferie As Range Dim adresse As String ' Initialisation des variables Set plage = ActiveSheet.Range("J7:J21") ' Déprotéger la feuille ActiveSheet.Unprotect 'Inutile de mettre un mot de passe qui 'apparaît en clair dans la macro !!! ' Déverrouiller toutes les cellules (soit la plage G7:H21) plage.Offset(0, -3).Resize(, 2).Locked = False ' Chercher la première cellule contenant FERIE Set ferie = plage.Find("FERIE", , xlValues, xlPart) 'ou .Find("FERIE", , xlValues, xlWhole) 'pour chercher la valeur exacte. If Not ferie Is Nothing Then ' Si elle existe, noter son adresse adresse = ferie.Address Do ' Verrouiller les cellules G:H de la ligne ferie.Offset(0, -3).Resize(, 2).Locked = True ' Chercher le FERIE suivant Set ferie = plage.FindNext(ferie) Loop While ferie.Address <> adresse 'Boucler tant qu'on n'est 'pas revenu à la 1° cellule End If ' Protéger la feuille ActiveSheet.Protect End Sub
Séb
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
26 oct. 2017 à 14:18
26 oct. 2017 à 14:18
Merci beaucoup, ça fonctionne nickel. :)
Le plus, serait que, dans la plage, elle n'est pas suivi.
C'est a dire que seule le groupe "J7:J9,J13:J15,J19:J21" soit activé et non une plage de "J7:J21".
(j'ai un doute sur la clarté de ma demande :) )
Merci d'avance,
Séb
Le plus, serait que, dans la plage, elle n'est pas suivi.
C'est a dire que seule le groupe "J7:J9,J13:J15,J19:J21" soit activé et non une plage de "J7:J21".
(j'ai un doute sur la clarté de ma demande :) )
Merci d'avance,
Séb
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
>
Séb
26 oct. 2017 à 17:59
26 oct. 2017 à 17:59
Il faut traiter chaque zone :
Public Sub verrouillage() Dim plage As Range Dim zone As Range Dim ferie As Range Dim adresse As String Set plage = ActiveSheet.Range("J7:J9,J13:J15,J19:J21") ActiveSheet.Unprotect For Each zone In plage.Areas zone.Offset(0, -3).Resize(, 2).Locked = False Next zone Set ferie = plage.Find("FERIE", , xlValues, xlPart) If Not ferie Is Nothing Then adresse = ferie.Address Do ferie.Offset(0, -3).Resize(, 2).Locked = True Set ferie = plage.FindNext(ferie) Loop While ferie.Address <> adresse End If ActiveSheet.Protect End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
30 oct. 2017 à 09:01
30 oct. 2017 à 09:01
De rien, au plaisir de te relire sur le Forum.