Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

saisie en majiscule et protéger la mise en page

  • Initiateur de la discussion Initiateur de la discussion hicham28
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hicham28

XLDnaute Occasionnel
Bonjour, et merci de votre aide
Comment faire svp pour obliger la saisie qu'elle soi en majuscule, et que la mise en page sois protéger sur tous un fichier xls.
Merci
 
Re : saisie en majiscule et protéger la mise en page

Bonjour hicham28,

Nommez Zone dans la feuille la plage des cellules que vous voulez contrôler (menu Insertion-Nom).

Puis dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, cel As Range
Set plage = Intersect(Target, [Zone]) 'Zone => plage nommée dans la feuille
If plage Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive l'action des évènements
For Each cel In plage
cel = UCase(cel.Text) 'mise en majuscule
Next
Application.EnableEvents = True 'réactivation
End Sub

Pour protéger les mises en forme, protéger la feuille...

A+
 
Re : saisie en majiscule et protéger la mise en page

merci encore une autre fois de votre reponse, en faite jai voulu proteger la mise en page de toutes les feuilles d'un fichier excel, si non comment reintegrer ton code sur celui la, (message d'hier)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Fin As Long, i As Long
If Target.Cells.Count = 1 Then
    Fin = Cells(Rows.Count, 1).End(xlUp).Row
    If Not Application.Intersect(Target, Range("A1:A" & Fin)) Is Nothing Then
        i = Target.Row
        If Range("AI" & i) = "-" Then Exit Sub
        If Range("A" & i).Value <> "" Then
            Range("E3:ES3").Copy Range("E" & i)
            Rows(i).RowHeight = 14
        End If
    End If
End If
End Sub
merci
 
Re : saisie en majiscule et protéger la mise en page

Re,

Pour combiner les 2 macros :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim plage As Range, cel As Range
Set plage = Intersect(Target, [Zone]) 'Zone => plage nommée dans la feuille
If Not plage Is Nothing Then
  Application.EnableEvents = False 'désactive l'action des évènements
  For Each cel In plage
    cel = UCase(cel.Text) 'mise en majuscule
  Next
  Application.EnableEvents = True 'réactivation
End If

Dim Fin As Long, i As Long
If Target.Cells.Count = 1 Then
    Fin = Cells(Rows.Count, 1).End(xlUp).Row
    If Not Application.Intersect(Target, Range("A1:A" & Fin)) Is Nothing Then
        i = Target.Row
        If Range("AI" & i) = "-" Then Exit Sub
        If Range("A" & i).Value <> "" Then
            Range("E3:ES3").Copy Range("E" & i)
            Rows(i).RowHeight = 14
        End If
    End If
End If

End Sub

A+
 
Re : saisie en majiscule et protéger la mise en page

merci encore de votre aide, ca marche bien pour mettre en majiscule les elements saisie, mais pas pour la protection, aussi je ne comprends pas pourquoi la copies des fonctions ne marche plus correctement !!!!
 
Re : saisie en majiscule et protéger la mise en page

Re,

Une chose à bien savoir hicham28, c'est qu'on peut définir une plage évolutive.

Par exemple si l'on veut contrôler les textes en colonne A de la Feuil1, on peut définir le nom zone avec cette formule à mettre dans la boîte de dialogue "Définir un nom" :

Code:
=DECALER(Feuil1!$A$1;;;EQUIV("zzz";Feuil1!$A:$A))

Cela peut s'appliquer à votre macro d'hier, à vous de voir.

A+
 
Re : saisie en majiscule et protéger la mise en page

la zone a etais bien défini comme vous m'avez demander de le faire, et j'ai bien verifier, mais la copies qui fais l'objet de mon code ne fonctionne plus corretcement
 
Re : saisie en majiscule et protéger la mise en page

Re,

Ecoutez hicham28, vous déverrouillez les cellules où vous autorisez l'entrée manuelle de données (menu Format-Cellules-Protection).

Puis sur la macro d'hier, vous ôtez la protection et la remettez à la fin :

Code:
Dim Fin As Long, i As Long
If Target.Cells.Count = 1 Then
    Fin = Cells(Rows.Count, 1).End(xlUp).Row
    If Not Application.Intersect(Target, Range("A1:A" & Fin)) Is Nothing Then
       i = Target.Row
        If Range("AI" & i) = "-" Then Exit Sub
        If Range("A" & i).Value <> "" Then
            [COLOR="Red"]Me.Unprotect 'ajouter éventuellement le mot de passe[/COLOR]
            Range("E3:ES3").Copy Range("E" & i)
            Rows(i).RowHeight = 14
            [COLOR="red"]Me.Protect 'ajouter éventuellement le mot de passe[/COLOR]
        End If
    End If
End If

Pas sorcier.

A+
 
Dernière édition:
Re : saisie en majiscule et protéger la mise en page

encore une autre question et suis dsl d'etre si lourd, j'aimerai bien savoir comment faire pour nommée plusieurs plages, 3 ou 4 , pour que la saisie soi en majiscule sur ces plages, vraiment suis dsl et aussi reconnaissant de votre aide job 75
 
Re : saisie en majiscule et protéger la mise en page

Re,

Je comprends que vous avez 3 ou 4 plages disjointes.

Vous pouvez donner le nom zone à l'union de toutes ces plages.

Pour cela il faut faire une sélection multiple : maintenez la touche Ctrl enfoncée puis avec la souris sélectionnez chacune des plages.

Ensuite menu-Insertion-Définir => zone

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
189
  • Question Question
Microsoft 365 Agenda
Réponses
3
Affichages
237
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…