IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bloquage de cellule & extrémité de fusion


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut Bloquage de cellule & extrémité de fusion
    Bonjours, je cherche en VBA sur Excel comment savoir si une cellule est fusionner & comment rendre une cellule insaisissable pour que l'utilisateur saute les cellule. Merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour meijin_ryu, bienvenue sur le forum.
    Un peu de lecture http://www.developpez.net/forums/sho...d.php?t=553987
    ... Et puis comme tu es tout neuf chez nous, teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("a3").MergeCells Then
    A+
    Bonne journée

    PS - Pour corriger ton sujet de discussion, utilise le bouton Editer en bas de ton message. Merci

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour éviter qu'un utilisateur modifie une cellule tu as deux solutions :
    Une explication. Dans Format -> Cellules -> Verrouillage, par défaut toutes les cellules sont verrouillées.
    Si tu protèges ta feuille, (Menu Outils -> Protection -> Feuille de calculs) aucune cellule ne pourra être modifiée.
    Pour permettre de saisir des données dans certaines cellules, tu peux les déverrouiller avant de protéger ta feuille.
    Seconde solution : Si l'utilisateur va sur une cellule, une macro le place automatiquement sur la suivante ou sur une autre colonne.
    Le code à placer dans la feuille de code de la feuille de calculs (Menu Outils -> Macros -> VB Editor -> + 2 clics sur le nom de la feuille) où tu colles ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    AdresseDeLaCellule = "D10" 'Tu adaptes
    If Target.Address(0, 0) = AdresseDeLaCellule Then _
        Target.Offset(1, 0).Select
    End Sub
    A la place d'une cellule, tu peux désigner une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AdresseDeLaColonne = 4
    If Target.Column = AdresseDeLaColonne Then
    auquel cas tu déplaces sur la colonne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(0, 1).Select
    Voilà je crois que j'ai répondu à tes deux questions

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,
    le titre n'est pas très explicite et tu pose deux questions mais bon

    1 - Cellule fusionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub FusionOuNon()
    MsgBox Range("A1").MergeCells
    End Sub
    2 - Saisie interdite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Saisie interdite
    If Target.Address = "$B$2" Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        MsgBox "Saisie interdite"
    End If
    End Sub
    Je te laisse adapter
    cordialement

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    merci pour la réponse si rapide.
    Pour la fusion des cellule c'est OK, mais je voudrais connaitre en réalité les extrémité de la cellule (je suis revenu sur le topic pour des complément d'information).
    Pour annulez la saisi d'une cellule, c'est pas ceux que j'attendais, je veux par exemple bloquer row(5) si l'utilisateur est sur row(4) et appuie sur bas, il est sur row(6), idem avec une plage de cellule. Exemple je bloque row(5) et row(7) si l'utilisateur sélectionne un plage de cellule dans row(6) il pourra pas déborder les ligne est ainsi il sera obliger de sélectionner une seule ligne est plusieurs colonne

    PS : je regarde le lien tout de suite

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub FusionOuNon()
    MsgBox Range("A1").MergeCells
    MsgBox Range("A1").MergeArea.Address
    End Sub
    Sinon tu as ta seconde réponse dans le code d'Ouskel'n'or, remplace column par row.

    @+

    EDIT merci d'avoir changé le titre

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par meijin_ryu
    Pour annulez la saisi d'une cellule, c'est pas ce que j'attendais, je veux par exemple bloquer row(5) si l'utilisateur est sur row(4) et appuie sur bas, il est sur row(6),
    C'est le même principe, mais à la place des colonnes, c'est sur les lignes :

    'Je suppose les lignes 5 et 7 à bloquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row = 5 Or Target.Row = 7 Then _
         Rows(Target.Offset(1, 0).Row).Select
    End Sub
    Après tu risques d'avoir les exceptions à traiter.
    Par exemple, ce code n'empêche pas de sélectionner les lignes 4 à 8 .
    Tu dis
    A+

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    merci ouskel'n'or, on se rapproche de mon problème, Je regarderais ça cette après-midis dans les détails.
    Si on veux bien se comprendre je fais par exemple un clic sur range("$B$5"), je maintient le clic enfoncée, je mets la souris sur range("$E$10"), au final je veux que selection.address = "$B$5:$E$10". Je pense que j'arriverais a me débrouiller avec ce que vous m'avez passé, merci encore

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Précisément, non ! Si la ligne 5 est bloquée et que tu la sélectionnes dans une plage, dans mon exemple, le code te placeras sur la ligne 6.
    Pour sélectionner une plage $B$5:$E$10 malgré le blocage de la ligne 5, je n'ai pas (pas encore) la solution. Je réfléchis Mais Fred l'a peut-être
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver le centrage des cellules lors de la fusion
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2007, 12h51
  2. [JTable]Fusion de cellules
    Par vincent63 dans le forum Composants
    Réponses: 6
    Dernier message: 13/02/2006, 14h28
  3. [VB] Fusion cellules dans un grid
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 21/12/2005, 09h07
  4. LISTBOX rowsource : référence à des cellules fusionées
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2005, 15h42
  5. [VBA-E] Fusion de cellule
    Par Nicos77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2004, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo