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 :

If Not Intersect([G5:G20], Target) Is Nothing [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraite
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut If Not Intersect([G5:G20], Target) Is Nothing
    Bonjour à toutes et tous,

    Ma version d’Excel
    Microsoft® Excel® pour Microsoft 365 MSO (Version 2309 Build 16.0.16827.20014) 64 bits

    Ma demande est la suivante, je souhaite avec un double-clic dans une cellule insérer automatiquement la phrase « Pré réservation du : 21 09 2023 ».
    Les cellules appartiennent à la colonne « G » mais elles sont fractionnées en plusieurs plages.
    Exemple :
    Plage 1 = [G5:G19]
    Plage 2 = [G25:G39]
    Plage 3 = [G45:G59]
    Plage 4 = [G65:G079]
    Plage 5 = [G85:G99]
    Plage 6 = [G105:G119]
    Plage 7 = [G125:G139]
    Plage 8 = [G145:G159]
    Plage 9 = [G165:G179]
    Plage 10 = [G185:G199]
    Plage 11 = [G205:G219]
    Plage 12 = [G225:G239]
    Pour le moment, j’arrive tant bien que mal à faire fonctionner une petite macro qui me permet d’agir sur le premier segment de colonne [G5:G19].
    Ma question est comment insérer dans mon code les autres segments ?
    Merci d'avance à toutes et tous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Intersect([G5:G20], Target) Is Nothing Then
      Target = Date
      Target = "pré réservation du : " & Chr(13) & Chr(10) & Format(Target.Value, "dd mm yyyy")
      Range("B2").Select
      Else
      ActiveCell.Select
      End If
    End Sub
    VOICI LE FICHIER :
    RESERVATION SALLE.xlsm

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 585
    Par défaut
    Bonjour

    Decouper ainsi en 12 tableaux n'est pas la meilleure approche : un unique tableau structuré et une fiche pour restituer un mois si besoin sera plus gérable.

    Pour répondre à ta question : nommer chacune des 12 plages avec un nom ayant la même racine et un indice : Groupe_1, Groupe_2...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        Dim zzone As Range
        Dim goon As Boolean
        Dim i As Byte
     
        goon = False
        For i = 1 To 12 'nombre de groupes nommés définis
            Set zzone = Range("Groupe_" & i)
            If Not Intersect(Target, zzone) Is Nothing Then
                goon = True
                Exit For
            End If
         Next i
         If goon = False Then Exit Sub
     
        Target.Value = "Pré réservation du : " & Format(Date, "dd mm yyyy")
        Cancel = True
    End Sub

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim rng As Range
        Dim cell As Range
     
        ' Les plages à traiter
        Dim plages As Collection
        Set plages = New Collection
     
        ' Ajouter les plages à la collection
        plages.Add Me.Range("G5:G19")
        plages.Add Me.Range("G25:G39")
        plages.Add Me.Range("G45:G59")
        plages.Add Me.Range("G65:G79")
        plages.Add Me.Range("G85:G99")
        plages.Add Me.Range("G105:G119")
        plages.Add Me.Range("G125:G139")
        plages.Add Me.Range("G145:G159")
        plages.Add Me.Range("G165:G179")
        plages.Add Me.Range("G185:G199")
        plages.Add Me.Range("G205:G219")
        plages.Add Me.Range("G225:G239")
     
        ' Vérifier si la cellule cliquée est dans l'une des plages
        For Each rng In plages
            If Not Intersect(rng, Target) Is Nothing Then
                ' Insertion de la phrase
                Target.Value = "Pré réservation du : " & Format(Date, "dd mm yyyy")
                Exit For ' Sortir de la boucle une fois que la plage a été trouvée
            End If
        Next rng
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraite
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut If Not Intersect([G5:G20], Target) Is Nothing
    Bonjour et merci 78chris,
    Bonjour et merci Franc,

    Vos codes m’ont beaucoup aidé.
    Il est vrai que la découpe de mon tableau est particulière, mais ce planning de réservation m’a été imposé.
    Je vous remercie encore pour l’intérêt apporté à ma question et pour les solutions. Je mets en place et je continue.
    MERCI.

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 585
    Par défaut
    Bonjour

    Le crosspost n'est pas apprécié sur les forums et même interdit sur certains

  6. #6
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraite
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut If Not Intersect([G5:G20], Target) Is Nothing
    Miles excuses 78chris je ne connaissais pas cette règle.
    Mon intention n’était pas de fâcher les utilisateurs du réseau.

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

Discussions similaires

  1. [XL-2016] Eviter l'instruction "If Not Application.Intersect(Target, Range("I18")) Is Nothing Then"
    Par Henri1830 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 04/08/2019, 18h08
  2. Is Not Nothing Comment ca marche?
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/06/2018, 10h38
  3. Réponses: 0
    Dernier message: 23/06/2015, 12h39
  4. [XL-2003] Explication de code If Not Intersect .. is Nothing
    Par Alfred23 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/10/2011, 10h33
  5. Réponses: 0
    Dernier message: 18/12/2007, 13h49

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