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 :

Comment faut il faire pour définir 2 plages de cellules ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Comment faut il faire pour définir 2 plages de cellules ?
    Salut,

    Pour faire suite à ce post, comment faut il faire pour définir 2 plages de cellules ?

    J'ai essayé cela, mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Worksheets("Feuil2").Range("A:A")&.Worksheets("Feuil3").Range("C:C")
    Qqn aurait-il une solution ?

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Salut, voir l'aide de la méthode Union
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    J'ai l'impression que la méthode Union ne fonctionne pas pour deux feuilles différentes, et de tailles différentes... Pouvez-vous confirmer ?

    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 Worksheet_Change(ByVal Target As Range)
     
        Dim val As Variant
        Dim plage1, plage2, plage3 As Range
     
     
        With ThisWorkbook
            val = .Worksheets("Feuil1").Range("E6").Value
            Set plage1 = .Worksheets("Feuil2").Range("A:A")
    Set plage2=.Worksheets("Feuil3").Range("D:D")
    Set plage3=union(plage1, plage2)
     
     
        End With
     
        If plage3.Find(What:=val, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
            MsgBox "Erreur ", vbOKOnly + vbExclamation, "Erreur de saisie"
            Range("E6").Select
            Selection.ClearContents
            Range("E6").Select
        End If

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Ce n'est pas un problème de taille mais bien de feuilles différentes …

    Donc il faut scinder la recherche par plage, si la première ne trouve rien, déclencher alors la deuxième …

    Il serait bien aussi de conditionner l'évènement par rapport à l'adresse de la cellule modifiée (Target.Address) et celle vérifiée, E6 …

    Car sinon à chaque modification de n'importe quelle autre cellule la recherche s'effectue pour rien !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Merci Marc-L, problème résolu avec ce code.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim val As Variant
        Dim plage As Range
        Dim plage2 As Range
     
        With ThisWorkbook
            val = .Worksheets("formulaire saisie").Range("E6").Value
            Set plage = .Worksheets("Feuil2").Range("A:A")
            Set plage2 = .Worksheets("Feuil3").Range("D:D")
        End With
     
        If plage.Find(What:=val, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
     
            If plage2.Find(What:=val, LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Is Nothing Then
            MsgBox "Erreur. ", vbOKOnly + vbExclamation, "Erreur de saisie"
            Range("E6").Select
            Selection.ClearContents
            Range("E6").Select
            End If
     
        End If
     
     
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2009, 13h44
  2. Réponses: 1
    Dernier message: 14/01/2009, 13h53
  3. Comment utiliser Range(cells(... pour indiquer une plage de cellules
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/05/2008, 10h35
  4. Comment puis je faire pour que'une page soir rechargees....
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/12/2005, 10h46
  5. [juridique] Que faut-il faire pour etre mandataire?
    Par Death83 dans le forum Droit
    Réponses: 5
    Dernier message: 24/11/2005, 17h09

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