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 :

{VBA Excel}Création de 2 condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut {VBA Excel}Création de 2 condition
    Bonjour,

    Je dois créer une condition pour obliger les personne utilisant un fichier excel de remplir la case au dessus d'elle et les cases a cotés

    Pour cela je dois réaliser deux conditions

    La 1er condition :
    Si la case d'au dessus n'est pas remplis je ne peux pas ecrire dans cette case.

    2eme condition :
    Si la case a coté n'est pas remplis je ne peux pas écrire dans cette case

    Exemple :

    La case A1 n'est pas remplie, donc je ne peux pas remplir la case A2

    Si la case A2 n'est pas remplie, je ne peux pas remplir la case F2

    Si la case A1 est remplie, je peux remplir la case A2 et ensuite remplir la case F2

    Je ne sait pas trop comment écrire cette macro. Voici un début que j'ai réalisé.

    Merci d'avance de tous vos coups de pouces ou autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Message()
        Application.ScreenUpdating = False
        Sheets("Saisie").Select 'Feuille où se trouve le tableau
        For i = 5 To 10000
            acquit = Cells(i-1, 1) 'colonne A
            If Not IsEmpty(acquit) Then
                MsgBox "Le case avant n'est pas remplie" 'message d'erreur
              Else
                Sheets("Saisie").Select
            End If
        Next i
        Application.ScreenUpdating = True
    End Sub
    Le nom sur la feuille que je travaille se nomme Saisie

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Bonjour Thomas

    J'espère que ma réponse te conviendra :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row <> 1 Then
        If Target <> "" And Target.Offset(-1, 0) = "" Then
        Target = ""
        MsgBox "Merci de remplir la case du dessus au préalable"
        Exit Sub
        End If
    End If
    If Target.Column <> 1 Then
        If Target <> "" And Target.Offset(0, -1) = "" Then
        Target = ""
        MsgBox "Merci de remplir la case d'à côté au préalable"
        Exit Sub
        End If
    End If
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    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
    Sub Thomas()
    
    Target As Range
    If Target.Row <> 1 Then
    If Target <> "" And Target.Offset(-1, 0) = "" Then
    Target = ""
    MsgBox "Merci de remplir la case du dessus au préalable"
    Exit Sub
    End If
    End If
    If Target.Column <> 1 Then
    If Target <> "" And Target.Offset(0, -1) = "" Then
    Target = ""
    MsgBox "Merci de remplir la case d'à côté au préalable"
    Exit Sub
    End If
    End If
    End Sub

    Voila j'ai inserer le code de telle maniere mais ne se lance pas
    et me met instruction incorrecte a la ligne en rouge

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    En fait ce type de code ne se lance pas par bouton de commande, il s'execute lorsqu'un cellule de ta feuille est modifiée
    c'est l'instruction worksheet_change

    Sélectionne ta feuille dans vba et tu insères le code tel qu'il est

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Je ne vois pas ce que tu veux dire

    J'ai compris pour cette ligne de code quand je modifie ca me lance la macro
    mais quand je lance la macro
    une fenetre apparait et me demande un nom de macro
    j'en met un au hasard et ca me crée une nouvelle macro

    j'ai pourtant selectionner la feuille comme tu as dis

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Saisie").Select 'selection de la feuille
    If Target.Row <> 1 Then
    If Target <> "" And Target.Offset(-1, 0) = "" Then
    Target = ""
    MsgBox "Merci de remplir la case du dessus au préalable"
    Exit Sub
    End If
    End If
    If Target.Column <> 1 Then
    If Target <> "" And Target.Offset(0, -1) = "" Then
    Target = ""
    MsgBox "Merci de remplir la case d'à côté au préalable"
    Exit Sub
    End If
    End If
    End Sub

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Non c pas ça en fait tu vas dans VBA
    dans ton explorateur de projets tu te positionnes sur ta feuille "saisie"
    puis là tu colles le code tel qu'il est

    et là, dès qu'une modif sera faite sur ta feuille excel le code se lancera

  7. #7
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    (soupir...)... (pas d'exaspération, faut s'entendre...)

    Dans l'éditeur VBA, il y a une petite fenêtre à gauche avec une arborescence du genre :

    - Projet VBA (Classeur1)
    - Objets Microsoft Excel
    - Feuil1 (Feuil1)
    - Feuil2 (Feuil2)
    - Feuil3 (Feuil3)
    - Module1

    Pour obtenir un squelette de code événementiel pour une feuille ou pour le classeur :
    • Tu double-cliques sur la feuille en question (Feuil1, par exemple). Une page d'édition de code s'ouvre.
    • En haut il y a deux liste déroulantes. Tu choisis dans celle de gauche l'objet Worksheet (d'ailleurs, il n'y a que celui là!) et dans celle de droite l'événement Change.
    • Finalement, tu ne copies que le code nécessaire à l'intérieur de la structure qui a été automatiquement ajoutée.


    Voilà!

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Merci je viens de comprendre

    Par contre je viens de me rendre compte que les case sont assemblé par 3
    je ne sais pas comment on peut rajouter un pas de 3 (step 3) dans le code que tu m'as fournis

    Au sinon un grand merci a vous deux

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Peux-tu donner un exemple des cellules utilisées STP ? parce que là je te suis pas trop

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    par exemple



    Les cellules ton assemblé par 3

    F5 ,F6 et F7 forme une seulle cellule et il ya une seulle information
    quand je modifie une cellule en dessous le programme verifie ligne par ligne et comme j'ai un assemblage il ne le remarque pas et croit que la cellule est vide


    donc pour éviter ce probleme je voulais vérifier de 3 en 3

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Peux-tu envoyer un fichier avec une dizaine d'exemples ? afin que je puisse déterminer une suite logique entre chaque paquet de cellules car là ton exemple ne m'avance pas trop

  12. #12
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    pour faire la relation entre toi et le code

    pas = offset

    offset(colonne, ligne) permet de bouger autour de ta cellule cible "target"

    je remontes de 1 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(-1, 0) = ??
    je remontes de 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Offset(-2, 0) = ??
    ...
    enfin voila
    plus simple, je vois pas

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    oui c'est ca Exactement merci beaucoup (pourquoi j'ai y ai pas pensé)

    Par contre comment je peux faire pour juste lancer cette macro sur une colonne particulière?

    exemple lancer cette macro seulement dans la colonne H

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Tu mets simplement ton numéro de colonne en condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if target.column = 6 then

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    au punaise je suis trop stupide

    Merci beaucoup a vous tous

    en tous cas je sent que je vous dois une caisse de champagne

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Ptet pas quand même

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

Discussions similaires

  1. [VBA EXCEL] Création de fichiers "fantômes"
    Par ancel17 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/07/2007, 14h38
  2. {VBA-Excel}Création de macro
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 04/06/2007, 11h54
  3. [VBA-Excel] Création de l'événement d'un clic droit
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2006, 12h36
  4. [VBA-Excel] Création d'une boîte de dialogue interactive
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/07/2006, 11h55
  5. VBA Excel - Création de graphique
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 16h11

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