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 :

Masquer plusieurs lignes et boucles capricieuses [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut Masquer plusieurs lignes et boucles capricieuses
    Bonjour, je souhaiterais un peu d'aide concernant deux problèmes distincts:

    -Le premier, j'ais le code suivant qui est sensé mettre 1 ou 0 dans la colonne E selon si le texte de la cellule voisine ( en D ) est "VRAI" ou "FAUX", mais ce dernier ne me met rien :s

    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
    Dim i As Integer
    Dim Compt As Integer
    'Worksheets("Fournitures").Cells(2, 10).Value = 1
    'Worksheets("Fournitures").Cells(3, 10).Value = 0
     
    Compt = 1
    While Cells(Compt, 3).Value <> ""
        Compt = Compt + 1
    'Cells(2, 8).Value = Compt
    Worksheets("Fournitures").Cells(Compt - 1, 5) = "0"
    Wend
     
    For i = 2 To Compt - 1
     
    'Select Case Worksheets("Fournitures").Cells(i, 4).Value
     
    '    Case Worksheets("Fournitures").Cells(i, 4).Value = "VRAI"
    '         Worksheets("Fournitures").Cells(i, 5).Value = "1"
    '    Case Worksheets("Fournitures").Cells(i, 4).Value = "FAUX"
    '         Worksheets("Fournitures").Cells(i, 5).Value = "0"
    'End Select
     
        If Worksheets("Fournitures").Cells(i, 4).Value = "FAUX" Then
        Worksheets("Fournitures").Cells(2, 9) = "0"
        End If
        If Worksheets("Fournitures").Cells(i, 4).Value = "VRAI" Then
        Worksheets("Fournitures").Cells(i, 5).Value = "1"
        End If
     
     
        'Cells(3, 8).Value = i
        'Cells(4, 8).Value = Worksheets("Fournitures").Cells(i, 4).Value
        'Cells(5, 8).Value = Worksheets("Fournitures").Cells(i, 5).Value
    Next i
    -Second problème, pour masquer les lignes qui ont dans la colonne D un "FAUX" mon code à beau être exécuté, il ne fait rien :s

    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
    Dim i As Integer
    Dim Compt As Integer
     
    Compt = 1
     
    While Cells(Compt, 4).Value <> ""
        Compt = Compt + 1
    Wend
     
     
     
        For i = 2 To Compt - 1
            If Cells(i, 4) = "FAUX" Then Rows(i).Hidden = True
            If Cells(i, 4) = "VRAI" Then Rows(i).Hidden = False
     
        Next i
    Pourriez vous m'éclairer, sachant que je débute en VB

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Une première chose pour trouver la dernière ligne regarde cette contribution de Ouskel'n'or
    personnellement je suis un adepte du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A65536").End(xlUp).Row
    Pour ton problème essaye peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If Worksheets("Fournitures").Cells(i, 4).Value = "FAUX" Then
        Worksheets("Fournitures").Cells(2, 9) = "0"
    tu testes la ligne i et tu met la 2 à 0
    essaye de remplacer le 2 par un i

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Merci de ta réponse rapide.

    Néanmoins quand j'applique le mode "pas à pas" je constate qu'il ne fait jamais le "then" de la condition "IF"

    N'ayant pas trop compris la fin de ton post j'ais testé en modifiant le "0" de la condition par "2" mais ça n'a rien changé sur le tableur, il ne modifie rien.

    Sur le "case" ( j'ais testé avec lui comme ça ne marchait pas avec le IF ) c'est folclorique, il me met les "vrai" à 0 et les "FAUX" à 1 alors que je lui demande l'inverse ( et en inversant les deux cases, il me met tout à 0, pareil si j'inverse les deux "IF" )

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If Worksheets("Fournitures").Cells(i, 4).Value = "FAUX" Then
        Worksheets("Fournitures").Cells(2, 9) = "0"
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If Worksheets("Fournitures").Cells(i, 4).Value = "FAUX" Then
        Worksheets("Fournitures").Cells(i, 9) = "0"
    aussi tu mes les 0 dans la colonne 9 et les 1 dans la colonne 5


    Voila qui devrais mieux fonctionner ou du moins faire ce que tu aimerais qu'il fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If Worksheets("Fournitures").Cells(i, 4).Value = "FAUX" Then
        Worksheets("Fournitures").Cells(i, 5) = "0"
        End If
        If Worksheets("Fournitures").Cells(i, 4).Value = "VRAI" Then
        Worksheets("Fournitures").Cells(i, 5).Value = "1"
        End If

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Comment est-ce que les cellules sont remplie avec des FAUX ou VRAI ?
    probablement avec des formules ?
    Si oui, la valeur FAUX par formule est équivalente à False en VBA
    et VRAI à True
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 2 To Compt - 1
         With Sheets("Fournitures")
            Select Case .Cells(i, 4).Value
            Case  True
                 .Cells(i, 5).Value = "1"
            Case  False
                 .Cells(i, 5).Value = "0"
            End Select
        End With
    ......
    A+
    Edit:
    ou bien plus simple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       With Sheets("Fournitures")
            .Cells(i, 5) = Abs(.Cells(i, 4))
        End With

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Merci de vos réponses !

    En effet, mettre le "i" ( erreur de ma part lors de mon post ici, méaculpa ) et le coup du "vrai" => "true" ont fait que tout fonctionne de manière cohérente

    Par contre, petite colle, j'ais un bouton qui met les "vrai" et "faux" sur une feuille différente ( "articles" ), comment faire pour qu'il permette aussi de lancer la procédure permettant de passer de "vrai" à "1" ( fdans la feuille "procédure" ) ?


    Pour le second problème, j'ais testé d'interchanger les true et false mais ça ne me masque toujours pas les lignes qui ont "faux"

    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
    Dim i As Integer
    Dim Compt As Integer
     
    Compt = 1
     
    While Cells(Compt, 4).Value <> ""
        Compt = Compt + 1
    Wend
     
     
     
        For i = 2 To Compt - 1
            If Cells(i, 4) = False Then Rows(i).Hidden = True
            If Cells(i, 4) = True Then Rows(i).Hidden = False
     
        Next i
    EDIT: tout fonctionne, j'ais fais la boulette de faire la détection de dernière ligne sur une colonne déjà vide ^^' ( je vois un sourire, et vous avez bien raison ! )

    ar contre, une petite idée pour le lancement de la procédure via le bouton ( Private Sub CommandButton1_Click() ) situé sur une autre feuille ?

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

Discussions similaires

  1. Bison : boucle WHILE - WEND espacée de plusieurs lignes
    Par DjPoke dans le forum Générateurs de compilateur
    Réponses: 5
    Dernier message: 07/10/2014, 10h23
  2. Réponses: 3
    Dernier message: 21/03/2013, 09h51
  3. Console R: boucle for - plusieurs lignes
    Par mathieu_r dans le forum R
    Réponses: 2
    Dernier message: 11/02/2011, 13h12
  4. Réponses: 9
    Dernier message: 16/05/2006, 11h59
  5. Define sur plusieurs lignes
    Par Gogoye dans le forum C
    Réponses: 6
    Dernier message: 06/10/2003, 11h45

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