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

Excel Discussion :

Comment déterminer s'il y a intersection entre deux plages de cellules ? [XL-365]


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut Comment déterminer s'il y a intersection entre deux plages de cellules ?
    Bonsoir, déjà je sais qu'il ne faut pas travailler avec des sélections mais là j'en ai besoin...

    J'ai une plage ("A1: D1") définie et stockée dans une base de données
    Je sélectionne une autre plage par exemple ("C1:F1")
    J'ai ici une intersection entre ces deux plages en C1 et D1

    Comment feriez vous premièrement pour stocker ces plages dans la base de donnée? pour l'instant je note la première cellule et la dernière cellule y a t il un meilleur moyen ?
    Deuxièmement comment faire pour comparer ces deux plages et détecter s'il y a intersection ou pas ?
    Je n'ai pas besoin de savoir le nombre de cellules ou quelles cellules juste savoir s'il y a intersection.

    Les cellules ne sont que colorées et certaines on du texte mais pas toutes.
    Je fais déjà une détection par la couleur mais je voudrai un moyen plus fiable.

    Merci

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par pokypok Voir le message
    Comment feriez vous premièrement pour stocker ces plages dans la base de donnée? pour l'instant je note la première cellule et la dernière cellule y a t il un meilleur moyen ?
    Utilise des variables de type Range.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaCel As Range
    Set MaCell = Range("A1:D1")
    Deuxièmement comment faire pour comparer ces deux plages et détecter s'il y a intersection ou pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Application.Intersection(MaCell1, MaCell2) Is Nothing Then
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Bonsoir Menhir merci pour ton aide.

    Utilise des variables de type Range.
    Est ce que je peux stocker la valeur de ce range? sous quelle forme ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
        Dim Rng1 As Range, Rng2 As Range
        Set Rng1 = Range("A1:D1")
        Set Rng2 = Range("C1:G1")
     
        If Not Application.Intersection(Rng1, Rng2) Is Nothing Then MsgBox "A"
     
    End Sub
    J'ai essayé cela message d'erreur sur la ligne du if

    Qu'est ce que j'ai omis?

  4. #4
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Comme tu m'as montré le nom de commande à utiliser j'ai fais des recherches et j'ai trouvé ceci qui est exactement ce dont j'ai besoin donc déjà un grand merci.
    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
    Private Sub UseIntersection()
        IntersectRanges Range("A1:D1"), Range("E1:G1")
    End Sub
     
    Private Sub IntersectRanges(range1 As Range, range2 As Range)
        Dim intRange As Range
     
        ' Application.Intersect Method
        Set intRange = Application.Intersect(range1, range2)
     
        If intRange Is Nothing Then
            ' No Intersection
            MsgBox "Ranges Do Not Intersect!"
        Else
            ' Show new Range's address
            MsgBox (intRange.Address)
     
            ' Select new Range
            intRange.Select
        End If
    End Sub
    Le truc c'est que je comprends pas pour quoi là cela fonctionne et pas en faisant comme tu me montrais....

    En revanche comment je peux faire pour stocker les deux ranges dans une base de donnée?

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Citation Envoyé par pokypok Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Dim Rng1 As Range, Rng2 As Range
        Set Rng1 = Range("A1:D1")
        Set Rng2 = Range("C1:G1")
        If Not Application.Intersection(Rng1, Rng2) Is Nothing Then MsgBox "A"
    End Sub
    J'ai essayé cela message d'erreur sur la ligne du if
    Qu'est ce que j'ai omis?
    Citation Envoyé par pokypok Voir le message
    Le truc c'est que je comprends pas pour quoi là cela fonctionne et pas en faisant comme tu me montrais....
    Quand il y a un message d'erreur la première chose à faire c'est le lire.

    S'il te propose le débogage, il faut l'essayer :

    Nom : vba Intellisense 3.jpg
Affichages : 513
Taille : 31,3 Ko

    Il surligne alors l'instruction où se trouve l'erreur :
    Le message est clair, la propriété ou la méthode n'est pas gérée par cet objet.

    Et il surligne l'objet Application et la propriété ou méthode Intersection

    Pour vérifier si la propriété ou la méthode existe, il suffit d'utiliser l'intellisense :
    Effacer .Insersection et taper . (point), l'intellisense propose les propriétés et méthodes existantes :
    Il suffit de chercher dans la liste (pour faciliter la rechercher on peut taper les premières lettres)

    Nom : vba Intellisense 4.jpg
Affichages : 509
Taille : 26,5 Ko

    et quand on a trouvé, appuyer sur la touche Tab pour que l'intellisense écrive automatiquement la propriété choisie : Intersect

    Nom : vba Intellisense 5.jpg
Affichages : 473
Taille : 16,4 Ko

    Voilà l'erreur, tu avais tapé Intersection au lieu de Intersect

    C'est pas fini, la macro est interrompue,
    tu peux continuer son exécution en tapant F5, et là elle continue et affiche le message !
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  6. #6
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Hello Patrice et merci pour ces explications.
    Bien entendu j'ai fait tout ce que tu as décris mais cela ne me parlais pas d'où mon message.
    En revanche il ne me propose pas tout le temps l'intellisense.

    En fait j'avais trouvé en fouinant que c'était intersect et pas intersection mais comme Menhir me l'avais proposé je me suis dit que cela devais venir de a part.

    Sinon après avoir déclaré mes deux ranges Rng1 et Rng2 comment je peux faire pour les stocker ? (comprendre par stocker mettre une valeur dans la cellule d un tableau)
    Pour l'instant j'ai 3 valeurs par range là si je peux stocker le range complet ça serait plus pratique
    J'ai trouvé qu'en rajoutant .Address cela nous donne la valeur en String de la plage $A$1:$C$1 par exemple mais je ne sais pas comment la gérer après

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,
    Citation Envoyé par pokypok Voir le message
    Sinon après avoir déclaré mes deux ranges Rng1 et Rng2 comment je peux faire pour les stocker ? (comprendre par stocker mettre une valeur dans la cellule d un tableau)
    Pour l'instant j'ai 3 valeurs par range là si je peux stocker le range complet ça serait plus pratique
    C'est totalement obscur !!!

    L'intersection de tes 2 ranges représente un troisième range.
    Pour écrire dedans il y a de très nombreuses façons
    Par exemple, en passant par un tableau VBA :
    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
    Option Explicit
    Sub test()
    Dim rng1 As Range, rng2 As Range, rng3 As Range, tbl As Variant, x As Long, y As Integer
      Set rng1 = Range("A1:D8")
      Set rng2 = Range("C4:G6")
      Set rng3 = Intersect(rng1, rng2)
      If Not rng3 Is Nothing Then
        MsgBox rng3.Address
        ' Dimensionner un tableau
        ReDim tbl(1 To Rng.Rows.Count, 1 To Rng.Columns.Count)
        ' Remplir le tableau
        For x = 1 To UBound(tbl)
          For y = 1 To UBound(tbl, 2)
            tbl(x, y) = Val(x & "." & y)
          Next y
        Next x
        ' Ecrire le tableau dans le range
        rng3.Value = tbl
      End If
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  8. #8
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Patrice740 Voir le message

    C'est totalement obscur !!!
    Je prends mon ampoule et j'essaie de m'éclaircir....

    Tous mes Range sont des plages de cellules contigües en ligne ou cellule unique.
    Sur une feuille des plages sont colorées et annotées. Ce sont ces plages là que je stocke dans une base de données par numéro de ligne, cellule de départ et cellule de fin.
    Soit trois cases pour une plage.

    Lorsque je saisie une nouvelle plage je veux comparer celle-ci avec celles déjà dans la base de données pour vérifier qu'il n'y ai pas d'intersection.

    Voilà le pourquoi du comment....


    Maintenant grâce à Menhir et toi je sais faire ma recherche d'intersection je n'ai plus qu'à trouver un moyen rapide et facile de stocker mes plages et de les récupérer pour faire mes comparaisons....

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si la demande est d'inscrire dans une cellule les coordonnées d'une intersection de plages, la syntaxe sera (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = Intersect(rng1, rng2).Address(False, False)
    A adapter à l'endroit où tu souhaites mettre ce résultat et aux plages de référence.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Si la demande est d'inscrire dans une cellule les coordonnées d'une intersection de plages, la syntaxe sera (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = Intersect(rng1, rng2).Address(False, False)
    A adapter à l'endroit où tu souhaites mettre ce résultat et aux plages de référence.
    Merci Menhir j'avais trouvé cela mais ça donne une valeur string façon $A$1:$C$1 ,mais comment je récupère cette valeur et je la remet dans une variable Range?

    J'ai essayé différentes choses par exemple pour recharger la valeur du range de Rng2 stockée en String dans la cellule A10
    Mais je n'ai pas trouvé comment faire même peut être que cela n'est pas possible...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("Feuil1").Range("A10").Value=Rng2.Address
    Set Rng1= Sheets("Feuil1").Range("A10").????????????

  11. #11
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par pokypok Voir le message
    JTous mes Range sont des plages de cellules contigües en ligne ou cellule unique.
    Jusque là ça va, mais après c'est toujours pas lumineux !
    Sur une feuille des plages sont colorées et annotées.
    Je ne vois pas ce que ça apporte dans la résolution du problème ? (ça noie le poisson !)
    Ce sont ces plages là que je stocke dans une base de données par numéro de ligne, cellule de départ et cellule de fin.
    Soit trois cases pour une plage.
    Ce ne sont pas les plages (c'est-à-dire leur contenu) que tu stockes, mais des références à ces plages, c'est-à-dire des adresses de plages.
    (les plages, elle sont à 800 m mais elles sont interdites)

    Si je comprends bien, tu as une base de données qui liste les références de ces plages et qui comporte 3 colonnes :

    Tu as donc dans un premier temps besoin de 3 informations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Sub test()
    Dim rng1 As Range, rng2 As Range, rng3 As Range
    Dim adrRng As String, adrDeb As String, adrFin As String
      Set rng1 = Range("A1:D1")
      Set rng2 = Range("C1:G1")
      Set rng3 = Intersect(rng1, rng2)
      If Not rng3 Is Nothing Then
        adrRng = rng3.Address
        adrDeb = Split(adrRng & ":", ":")(0)
        adrFin = Split(adrRng & ":", ":")(1) 'vide s'il n'y a qu'une cellule
      End If
    End Sub
    A mon avis la première suffit : ça sert à rien des stocker des informations redondantes .
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par pokypok Voir le message
    Merci Menhir j'avais trouvé cela mais ça donne une valeur string façon $A$1:$C$1
    Les paramètre que j'ai ajouté dans le code présenté évitent les $ inutiles.

    mais comment je récupère cette valeur et je la remet dans une variable Range?
    Intersec est déjà un objet Range. Donc inutile d'extraire l'adresse pour la placer dans une variable.
    Ma première réponse indiquait comment renseigner une variable de type Range.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaZone As Range
    Set MaZone = Intersect(rng1, rng2)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Sub test()
    Dim rng1 As Range, rng2 As Range, rng3 As Range
    Dim adrRng As String, adrDeb As String, adrFin As String
      Set rng1 = Range("A1:D1")
      Set rng2 = Range("C1:G1")
      Set rng3 = Intersect(rng1, rng2)
      If Not rng3 Is Nothing Then
        adrRng = rng3.Address
        adrDeb = Split(adrRng & ":", ":")(0)
        adrFin = Split(adrRng & ":", ":")(1) 'vide s'il n'y a qu'une cellule
      End If
    End Sub
    A mon avis la première suffit : ça sert à rien des stocker des informations redondantes .
    Bon ok désolé de ne pas arriver à me faire comprendre mais avec ce que tu as écrit j'ai compris encore des choses merci.

    Je vais poser ma question d'une autre manière dans ton exemple comment faire pour que adrRng, de valeur "$C$1:$D$1" qui est un string, le faire redevenir un range exploitable comme tel?

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par pokypok Voir le message
    comment faire pour que adrRng, de valeur "$C$1:$D$1" qui est un string, le faire redevenir un range exploitable comme tel?
    Tout simplement.
    Cela dit, cette formule référence une cellule de la feuille active.

    Mais je ne vois pas l'intérêt de transformer une référence de cellule en adresse string pour la retransformer en référence...
    (voir ma réponse précédente)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par pokypok Voir le message
    Bon ok désolé de ne pas arriver à me faire comprendre mais
    Le plus simple est que tu expliques en bon français ce que tu as, ce que ça représente et ce que tu voudrais en faire, le résultat à obtenir, en mettant des commentaires et des images, sans parler ni d'Excel ni de VBA.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  16. #16
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Classeur de planning véhicule très très simplifié ....
    Pièce jointe 560772

    Base de donnée à ce jour
    Pièce jointe 560768

    Base de données avec les address
    Pièce jointe 560774

    Quand il y a un nouvel evenement vehicule on choisi une plage de dates et je compare avec les autres déjà rentrés pour voir si le véhicule est libre

  17. #17
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,

    Tout d'abord, il ne doit jamais y avoir de redondance dans les bases de données !
    C'est un principe élémentaire impératif.

    Dans ta base adresses, seules les colonnes ID et Range de l'évènement doivent exister, les autres données sont dans l'autre base.
    Ceci dit tu pourrais n'utiliser qu'une seule base en ajoutant la colonne Range à la première.

    Quand il y a un nouvel evenement vehicule
    Qu'est-ce qu'un évènement véhicule ? Comment se produit-il ? Quelles sont les conséquences ?

    on choisi une plage de dates
    Comment, Où ?
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  18. #18
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par pokypok Voir le message
    Quand il y a un nouvel evenement vehicule on choisi une plage de dates et je compare avec les autres déjà rentrés pour voir si le véhicule est libre
    Je ne comprends toujours pas l'intérêt d'inscrire l'adresse de cellule dans une cellule.

    De plus, je pense que ce que tu décris n'a pas besoin de VBA pour être réalisé. Une simple fonction NB.SI.ENS() (ou deux) suffirait sans doute.

    Dans ton planning, un NB.SI.ENS() pourrait t'indiquer combien de réservations existent pour cette date et ce véhicule.
    Le plus propre serait de faire deux mise en forme conditionnelles : une première qui mettrait la cellule en jaune s'il y a 1 réservation et une seconde qui la mettrait en rouge s'il y en a plus d'une.
    Ainsi, tes cellules se coloreraient automatiquement.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    Membre régulier
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Points : 81
    Points
    81
    Par défaut Merci
    Merci pour votre aide.

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

Discussions similaires

  1. Détecter l'intersection entre deux rectangles
    Par Arnaud F. dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 10/07/2009, 09h43
  2. Réponses: 6
    Dernier message: 13/03/2009, 16h01
  3. Réponses: 7
    Dernier message: 19/06/2008, 15h18
  4. [SQL] Intersection entre deux tables
    Par Al3x dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/12/2007, 16h46
  5. Intersection entre deux listes
    Par Sarah221985 dans le forum Prolog
    Réponses: 1
    Dernier message: 19/11/2007, 23h11

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