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

Access Discussion :

sauter un chapitre de code quand une cellule vide


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 24
    Points
    24
    Par défaut sauter un chapitre de code quand une cellule vide
    bonjour,

    je suis sur une base access avec code VBA et une routine qui permet de convertir une nomenclature "horizontale" en nomenclature "verticale" (merci FT035580 et Oleff ) la voici :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    Private Sub BoutonExport_Click()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim AppliExcel As Excel.Application
    Dim FichierExcel As Excel.Workbook
    Dim row As Integer
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Req Mars", dbOpenDynaset)
    Set AppliExcel = CreateObject("Excel.Application")
    AppliExcel.Visible = True
    Set FichierExcel = AppliExcel.Workbooks.Open("P:\MMA\Prepa MMA\Chargement_nomenclatures.xls")
    AppliExcel.Sheets("MMH_LOAD_DPLL_EXEMPLE").Select
    row = 1
     
    While Not rst.EOF
     
    'Cornière haute
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = rst.Fields(2) 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = "1" 'dépend de l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'Cornière latérales
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = rst.Fields(3) 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = "2" 'dépend de l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'U de pied
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = rst.Fields(4) 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = "1" 'dépend de l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'Surbau
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = rst.Fields(5) 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = "1" 'dépend de l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'tapes
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = rst.Fields(6) 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = "2" 'dépend de l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'suport de dr
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = IIf(rst.Fields(7) > 0, "SupDR", "") 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = rst.Fields(7) 'dépend de la qté l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
     
    'support de Butée kit1
    AppliExcel.cells(row, 1) = "A33"
    AppliExcel.cells(row, 2) = rst.Fields(0) 'tout le temps (0)
    AppliExcel.cells(row, 3) = IIf(rst.Fields(8) > 0, IIf(IsNull(rst.Fields(9)), "", "SupBut"), "") 'evolu par article
    AppliExcel.cells(row, 4) = "D" 'fixe
    AppliExcel.cells(row, 5) = "MM14" & rst.Fields(1) 'suivant le kit de l'article concerné
    AppliExcel.cells(row, 6) = "0" 'fixe
    AppliExcel.cells(row, 7) = rst.Fields(8) 'dépend de la qté l'arcticle
    AppliExcel.cells(row, 10) = "272A" 'fixe
    AppliExcel.cells(row, 11) = "PI" 'fixe
    row = row + 1
    rst.MoveNext
    Wend
    End Sub
    maintenant il arrive que certaines cellules de ma base de "base" soient vides, j'aimerais que dans ce cas là les cellules de mon fichier destination ne le soit pas (ne soit pas créer non plus du coup).

    Voili voila, j'ai essayé pas mal de truc du type iif then goto mais j'ai rencontré des problèmes et je doute que cela soit la meilleur solution vu mon piètre niveau sur VBA.

    Pouvez vous m'aider ??

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Je ne suis pas sur d'avoir bien compris mais si c'est le cas il suffit d'introduire un if simple dans le code.
    Entre le if et le end if, les lignes ne seront exécutées que si la condition d'entrée est remplie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if condition then
        création de tes cellules
    end if

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    salut Oleff,

    oui en fait je l'ai déjà tenté, ça fonctionne d'ailleur sur la plus part des lignes sauf sur une, j'ai essayé la condition IsNull(rst.Fields(2)) (ouais je l'ai tourné à l'envers)
    c'est quoi l'inverse de IsNull ? ouais c'est moi qui est nul

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Tu peux doubler les conditions en écartant la valeur qui te gêne.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Je comprends pas bien ce que tu veux dire là !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Un if peut accepter plusieurs conditions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if condition1 and condition2 ... then
    pour des conditions exclusives
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if condition1 OR condition2 then
    Pour des conditions complémentaire.
    Si j'ai bien compris ton cas, tu as plusieurs conditions blocantes.
    Donc ton if doit être du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not premièreConditionBlocante and not deuxièmeConditionBlocante then
       traitement

  7. #7
    Membre régulier Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Points : 118
    Points
    118
    Par défaut
    Pour l'inverse de IsNull tu fais :
    if (rst.IsNull) = False

    et le tour est joué

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    merci à tous

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/04/2015, 15h06
  2. [XL-2010] Copier/coller des formules quand une cellule est renseignée
    Par lumpys dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/12/2014, 13h54
  3. Réponses: 3
    Dernier message: 04/09/2014, 20h23
  4. Réponses: 3
    Dernier message: 04/02/2014, 09h31
  5. Mettre un "0" à là place d'une cellule vide.
    Par P'tit Lio dans le forum Access
    Réponses: 22
    Dernier message: 24/07/2006, 14h19

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