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 :

sélection de plages de cellule selon condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 293
    Points : 132
    Points
    132
    Par défaut sélection de plages de cellule selon condition
    Bonjour, voilà mon problème :

    Le code ci dessous me permet de sélectionner la première cellule vide d'une plage de cellule. que je définis avec .Range("C12:C40")

    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
     
    Private Sub CommandButton1_Click()
    Dim CelVide As Range
        With Worksheets("S01") 'Nom de feuille à adapter
            'On recherche la première cellule vide dans la plage A1:A15
            Set CelVide = .Range("C12:C40").Find(What:="", After:=.Range("C12"), LookIn:=xlValues, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False)
            'S'il existe une cellule vide, on lui affecte la valeur de la TextBox
            If Not CelVide Is Nothing Then
                CelVide = Me.TextBox1.Value
                CelVide.Offset(0, 1) = Me.TextBox3.Value 'copie le contenu de la TextBox3 dans la cellule adjacente à la cellule vide
            Else
                'Sinon, on affiche un message
                MsgBox "Aucune cellule vide"
            End If
        End With
    End Sub
    donc dans ma feuille excel j'ai plusieurs jours dans lesquels ils faut rentrer des produits. afin d'éviter de créer un userform pour chaque jour, je voudrais dans mon userform mettre une textbox avec le jour (ex : 1,2,3,4,5,6,7)

    donc voici un bout de code que je veux remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if me.textbox.value="1" then (et là je voudrais spécifier la plage de cellule ex A1:A22)
     
    if me.textbox.value="2" then (et là je voudrais spécifier la plage de cellule ex B1:B22)
    ...

    mais je sais qu'il faudrait employer range mais je vois pas de quelle façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'On recherche la première cellule vide dans la plage A1:A15
            Set CelVide = .Range("C12:C40").Find(What:="", After:=.Range("C12"), LookIn:=xlValues, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    dans le code ci dessus que faut il mettre à la place de ce code ci dessous pour sélectionner la plage par rapport au choix du jour dans la textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .Range("C12:C40").Find(What:="", After:=.Range("C12")
    J'espère avoir été clair dans ma demande.

    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Voici un code qui devrait répondre à tes attentes, au moins dans l'idée, tu as peut etre quelque ajustements a effectué en fonction des plages que tu souhaite balayer

    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
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub CommandButton1_Click()
    Dim CelVide As Range
    Dim PlageRecherche As Range
     
    With Worksheets("S01") 'Nom de feuille à adapter
        Select Case Me.TextBox.Value
            Case 1
                Set PlageRecherche = .Range("A1:A22")
            Case 2
                Set PlageRecherche = .Range("B1:B22")
            Case 3
                Set PlageRecherche = .Range("C1:C22")
            Case 4
                Set PlageRecherche = .Range("D1:D22")
            Case 5
                Set PlageRecherche = .Range("E1:E22")
            Case 6
                Set PlageRecherche = .Range("F1:F22")
            Case 7
                Set PlageRecherche = .Range("G1:G22")
            Case Else
                MsgBox "Numero non valide"
                Exit Sub
        End Select
     
            'On recherche la première cellule vide dans la PlageRecherche
            Set CelVide = PlageRecherche.Find(What:="", After:=.Range("A1"), LookIn:=xlValues, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False)
            'S'il existe une cellule vide, on lui affecte la valeur de la TextBox
            If Not CelVide Is Nothing Then
                CelVide = Me.TextBox1.Value
                CelVide.Offset(0, 1) = Me.TextBox3.Value 'copie le contenu de la TextBox3 dans la cellule adjacente à la cellule vide
            Else
                'Sinon, on affiche un message
                MsgBox "Aucune cellule vide"
            End If
        End With
    End Sub
    Cdt

    Guiiand

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 293
    Points : 132
    Points
    132
    Par défaut
    Merci de ton aide Guiiand.

    j'ai erreur qui me dit incompatibilité de type sur ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set CelVide = PlageRecherche.Find(What:="", After:=.Range("C12"), LookIn:=xlValues, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False)
    merci pour votre aide

  4. #4
    Membre actif
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Points : 269
    Points
    269
    Par défaut
    Effectivement petite erreur de ma part.

    Voici la correction.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub toto()
    Dim CelVide As Range
    Dim PlageRecherche As Range
    Dim Apres As Range
     
     
    With Worksheets("S01") 'Nom de feuille à adapter
        Select Case Me.TextBox1.Value
            Case 1
                Set PlageRecherche = .Range("A1:A22")
                Set Apres = .Range("A1")
            Case 2
                Set PlageRecherche = .Range("B1:B22")
                Set Apres = .Range("B1")
            Case 3
                Set PlageRecherche = .Range("C1:C22")
                Set Apres = .Range("C1")
            Case 4
                Set PlageRecherche = .Range("D1:D22")
                Set Apres = .Range("D1")
            Case 5
                Set PlageRecherche = .Range("E1:E22")
                Set Apres = .Range("E1")
            Case 6
                Set PlageRecherche = .Range("F1:F22")
                Set Apres = .Range("F1")
            Case 7
                Set PlageRecherche = .Range("G1:G22")
                Set Apres = .Range("G1")
            Case Else
                MsgBox "Numero non valide"
                Exit Sub
        End Select
     
        'On recherche la première cellule vide dans la PlageRecherche
        Set CelVide = PlageRecherche.Find(What:="", After:=Apres, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
        'S'il existe une cellule vide, on lui affecte la valeur de la TextBox
        If Not CelVide Is Nothing Then
            CelVide = Me.TextBox1.Value
            CelVide.Offset(0, 1) = Me.TextBox3.Value 'copie le contenu de la TextBox3 dans la cellule adjacente à la cellule vide
        Else
            'Sinon, on affiche un message
            MsgBox "Aucune cellule vide"
        End If
    End With
     
    End Sub
    Cdt

    Guiiand

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 293
    Points : 132
    Points
    132
    Par défaut
    Merci ca marche

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

Discussions similaires

  1. [XL-2003] Sélection d'une plage de cellules selon la date
    Par iIncoming dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/07/2013, 18h09
  2. Restreindre la sélection de plage de cellule
    Par djm69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2008, 14h36
  3. Bloquer les cellules selon condition
    Par jokenjo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/01/2008, 14h21
  4. Sélection d’une plage de cellule
    Par Domver dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2007, 14h16
  5. Macro en fonction d'une sélection de plage de cellules.
    Par Labiche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2006, 10h23

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