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 :

Mon code pour masquer certaines cellules ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2011
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2011
    Messages : 537
    Points : 80
    Points
    80
    Par défaut Mon code pour masquer certaines cellules ne fonctionne pas
    Bonsoir le forum

    Je sollicite de l'aide pour parfaire l'impression de mon ticket de caisse.
    Je souhaite que lorsqu'il y'a des cellules vides dans la plage B10:B20, que toutes les lignes correspondantes soient masquées.
    Le code ci-dessous a été conçu a cet effet mais je constate qu'il ne fonctionne pas totalement.
    En effet, il y'a impression mais pas de masque de ligne quand bien même les cellules de la condition sont vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Feuil8
        .Visible = True
        .Range("B10:B20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        .PrintOut
        .Range("B10:B20").EntireRow.Hidden = False
        .Visible = xlSheetVeryHidden
    End With

  2. #2
    Membre chevronné Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    août 2014
    Messages
    1 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : août 2014
    Messages : 1 142
    Points : 2 127
    Points
    2 127
    Par défaut
    Bonjour Capi, bonjour le forum,

    Parfois des cellules qui semblent vides ne le sont pas... Elles contiennent un espace ou autre.

    Teste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil8.Range("B10:B20").Cells.SpecialCells(xlCellTypeBlanks).Select
    Ça donne quoi ?
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2011
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2011
    Messages : 537
    Points : 80
    Points
    80
    Par défaut
    Bonsoir Thautheme et le forum

    Je viens de tester et c'est l ligne 20 seulement qui est sélectionnée.
    Parfois des cellules qui semblent vides ne le sont pas... Elles contiennent un espace ou autre
    Je suis d'avis avec vous.
    Comment faire maintenant pour satisfaire mon besoin?
    merci

  4. #4
    Membre éprouvé Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    décembre 2017
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : décembre 2017
    Messages : 561
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonjour, j'ai testé ce code, si les cellules sont réellement vides cela marche correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    With Worksheets("Feuil1")  'a remplacer "Feuil1" par votre nom de feuille
        .Visible = True
        .Range("B10:B20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        .PrintOut
        .Range("B10:B20").EntireRow.Hidden = False
    End With
    End Sub
    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2011
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2011
    Messages : 537
    Points : 80
    Points
    80
    Par défaut
    Bonjour Transitoire , Thautheme et le forum

    Merci pour vos contributions.
    Il faut noter que la plage B10:E20 est alimenté par les données d'un usf dans l'ordre suivant
    Combobox (pour le choix du produit), Textbox_Qte, Textbox_Prix et Textbox_Montant
    IL y'a 10 combobox, 10 Textbox_Qte, 10 Textbox_prix et 10 Textbox_Montant
    Lors de la facturation, certains controls de mon usf peuvent ne pas comporter des données, donc à la validation, la plage B10:E20 est alimenté par les données des controls.
    Est-ce que le fait que certeins controls soient vides peut impacter la plage (absence de vide réellement)?
    Au lieu de considerer toutes la plage B10:E20, je me suis dis que si B10:B20 comporte du vide ca permettra d'atteindre l'objectif visé c'est à dire masquer les lignes vides de la plage considérée.
    Comment faire pour pouvoir masquer les lignes de la plage B10:B20 qui ne contiennent uniquement que des produits facturés?
    Autrement dit comment arriver à faire masquer les lignes fictives (contenant des données invisible à l'oeil nu sauf par test)?

    Cordialement

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    mai 2008
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 280
    Points : 424
    Points
    424
    Par défaut
    Bonjour...

    En feuil8(Feuil8), le ‘ticket’ est un Tableau (LitObjects), n’imprimer que ses lignes totalement remplies :
    Nom : Tableau Impression.jpg
Affichages : 30
Taille : 24,3 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ip()
      With Feuil8
        .Visible = 1
        [Ticket].Item(1, 5).FormulaR1C1 = "=COUNTIF(Ticket[@[Titre1]:[Titre4]],"""")"
        [Ticket].AutoFilter 5, 0
        [Ticket].Item(-1, 1).Resize([Ticket].Rows.Count + 1, 4).PrintPreview '.PrintOut
        [Ticket].Columns(5).Delete
        .Visible = 2
      End With
    End Sub
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éprouvé Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    décembre 2017
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : décembre 2017
    Messages : 561
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonjour, au lieu de travailler sur B10:B20, essayez donc sur C10:C20. il est possible que le problème vienne des Combobox . sinon, il nous faudrait les codes des Combo et TextBox ?
    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  8. #8
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2011
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2011
    Messages : 537
    Points : 80
    Points
    80
    Par défaut
    Bonjour Transitoire et le forum

    En supposant que la plage B10:B20 pourrait ou contient des informations (espaces et autres) et le nombre de caractère possible ne depasserait pas 3, est ce qu'il ne serait pas possible de tester le nombre de caractères. Si le nombre de caractère de chaque cellule de la plage B10:B20 est inférieur à 3, que les lignes soient masquées.

    Je vous partage un code contenu dans le 1er combobox intitulé combobox_Bois:
    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
    Dim derlig As Long
    Dim i As Integer
     
    On Error Resume Next
    Ligne = Application.Match(Me.ComboBox_Bois1, Sheets("BASE_ARTICLES").Range("A:A"), 0)
     
    Me.TextBox_PV1 = Sheets("BASE_ARTICLES").Range("E" & Ligne)
    If ComboBox_Bois1.Value = "" Then Exit Sub
        ComboBox_Bois2.Clear
    'TextBox_Qte1.SetFocus
     
        For i = 0 To ComboBox_Bois1.ListCount - 1 'To 0 Step -1
             If ComboBox_Bois1.List(i) <> ComboBox_Bois1.Value Then ComboBox_Bois2.AddItem ComboBox_Bois1.List(i) 'ComboBox_Bois1.RemoveItem (i)
        Next i
     
        ComboBox_Bois3.Clear
        ComboBox_Bois4.Clear
        ComboBox_Bois5.Clear
        ComboBox_Bois6.Clear
        ComboBox_Bois7.Clear
        ComboBox_Bois8.Clear
        ComboBox_Bois9.Clear
        ComboBox_Bois10.Clear

  9. #9
    Membre éprouvé Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    décembre 2017
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : décembre 2017
    Messages : 561
    Points : 1 128
    Points
    1 128
    Par défaut
    bonjour, avez vous testé le remplacement que je vous avais demandé de tester?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Feuil8
        .Visible = True
        .Range("B10:B20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        .PrintOut
        .Range("B10:B20").EntireRow.Hidden = False
        .Visible = xlSheetVeryHidden
    End With
    a remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Feuil8
        .Visible = True
        .Range("C10:C20").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        .PrintOut
        .Range("C10:C20").EntireRow.Hidden = False
        .Visible = xlSheetVeryHidden
    End With
    Si vous ne l'avez pas fait, faites le SVP
    par ailleurs sur quelle colonne, se trouvent les valeurs reçues des ComboBox?

    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  10. #10
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2011
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2011
    Messages : 537
    Points : 80
    Points
    80
    Par défaut
    Bonsoir Transitoire

    Merci pour votre feedback.
    Si vous ne l'avez pas fait, faites le SVP
    Je viens de tester et ca marche pour le moment.
    Je vais approfondir les tests et vous revenir avec le resultat final.
    par ailleurs sur quelle colonne, se trouvent les valeurs reçues des ComboBox?
    La colonne B et plus precisement B10:B20.
    Cordialement

Discussions similaires

  1. [XL-2007] Code pour selection de cellules qui ne fonctionne pas avec la fonction "Locked"
    Par coco.on.off dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/07/2014, 19h01
  2. Réponses: 5
    Dernier message: 22/03/2013, 06h09
  3. Réponses: 7
    Dernier message: 25/07/2007, 14h14
  4. [Tableaux] probleme avec mon code pour faire un parseur !
    Par Joe-La-Boule dans le forum Langage
    Réponses: 10
    Dernier message: 11/10/2006, 16h35

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