Code VB, ne pas afficher ligne vide

Pour faire ce que tu souhaites, tu peux remplacer la macro extraction par celle-là :

Sub extraction()
'
' extraction Macro

    Application.ScreenUpdating = False
    Range("A7:E15").ClearContents

    Sheets("MVTSTOCK").Range("Mvtstock").AdvancedFilter Action:=xlFilterCopy, _
                                                        CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("A7"), Unique:=False
    For i = 8 To 15
        If Application.WorksheetFunction.CountBlank(Range("A" & i & ":E" & i)) > 1 Then Rows(i).EntireRow.Hidden = True
    Next i
    Range("A26:E27").ClearContents
End Sub

Re,

Ca a marché lors de ma 1ere validation , mais pour les validations suivantes avec les contrats 2 , 3 , 4 etc ca ne marche pas , ca me supprime soit toutes les lignes , soit ca affiche toute la plage A16:E26....

Je pense que ce problème vient du fait que la macro joue sur la plage A16:E23 de la feuille FACTURE , et non sur A16:J23

Bonsoir maxime,

De quelle macro parles-tu ? Extraction ou validation ?

maxime079 a écrit :

ca me supprime soit toutes les lignes

les lignes de quelle feuille ?
maxime079 a écrit :

soit ca affiche toute la plage A16:E26

la plage de quelle feuille ? A aucun moment cette plage n'apparait dans les macros extraction et validation !

Idem pour les plages A16:E23.

maxime079 a écrit :

Je pense que ce problème vient du fait que la macro joue sur la plage A16:E23 de la feuille FACTURE , et non sur A16:J23

Peux-tu préciser quelle macro ? Aucune n'utilise ces plages

Il faut que tu sois plus clair pour avoir une aide plus efficace !

Re ,

Désolé de mal m'expliquer . Je vais détailler ce que je veux que ma macro face :

  • FEUILLE FACTURE : On tape un numéro de devis en B3
  • La macro recherche alors ce numéro de devis dans la feuille MVTSTOCK
  • FEUILLE MVTSTOCK , et que UNIQUEMENT Les lignes correspondantes à ce numéro de devis sont recopiées vers la FEUILLE FACTURE dans la plage de cellules A26:E21

+ la plage de cellules F16:J21 étant rentrées manuellement ( sauf pour les prix )

Problème 1 :

La macro actuelle me supprime également les données A26:E27 de la FEUILLE FACTURE

Problème 2 :

La macro actuelle me supprime la plage de cellules F16:J21...

maxime079 a écrit :

- FEUILLE FACTURE : On tape un numéro de devis en B3

- La macro recherche alors ce numéro de devis dans la feuille MVTSTOCK

Ok.
maxime079 a écrit :

- FEUILLE MVTSTOCK , et que UNIQUEMENT Les lignes correspondantes à ce numéro de devis sont recopiées vers la FEUILLE FACTURE dans la plage de cellules A26:E21

Tu parles surement de la plage A16:E21. Mais qu'en est-il de la plage A7:E15 ?
maxime079 a écrit :

Problème 1 :

La macro actuelle me supprime également les données A26:E27 de la FEUILLE FACTURE

Problème résolu.
maxime079 a écrit :

Problème 2 :

La macro actuelle me supprime la plage de cellules F16:J21...

Tu parles de la macro extraction on est d'accord. Pourtant, en regardant la macro extraction du post du 25 Jan 2010 à 17:13, cette plage n'est pas supprimée.

Question : à quoi sert le champ nommé "Mvtstock" ? C'est pour le filtre élaboré de la macro extraction ?

Tu parles surement de la plage A16:E21. Mais qu'en est-il de la plage A7:E15 ?

Les cellules A7:E15 ne bougent pas , je veux que un copier / coller des lignes vides correspondantes au numero de devis dans MVTSTOCK vers A16:E23 ( E23 au lieu de E21 dit precedemment, car je veux 8 lignes de FACTURE

Tu parles de la macro extraction on est d'accord. Pourtant, en regardant la macro extraction du post du 25 Jan 2010 à 17:13, cette plage n'est pas supprimée

Oui je parle de la macro Extraction. Mais je veux dire que quand j'execute la macro qui existe actuellement , elle me supprime cette plage de données ( ici pareil la plage n'est pas F16:J21 mais F16:J23 ) (voir image topic precedent)

Or je ne veux pas que cette plage ce supprime !

Question : à quoi sert le champ nommé "Mvtstock" ? C'est pour le filtre élaboré de la macro extractio

Oui c'est pour que le filtre élaboré fonctionne , si t'as une autre idée je suis preneur

Re,

Remplace la macro extraction par celle-ci et dis-moi ce qu'il manque :

Sub extraction()
'
' extraction Macro

    Application.ScreenUpdating = False
    Range("A7:E15").ClearContents
    With Sheets("MVTSTOCK")
        On Error Resume Next
        .ShowAllData
        .Cells.EntireRow.Hidden = False
        With .Range("A4:F4")
            .AutoFilter Field:=1, Criteria1:=Range("B3")
            .AutoFilter Field:=2, Criteria1:=0
        End With
        .Range("_FilterDataBase").Offset(1).Resize(, 5).SpecialCells(xlCellTypeVisible).Copy [A16]
    End With
End Sub

Cette macro me supprime les données dans la feuille MVTSTOCK , OR je veux garder toutes les données de cette feuille , pour que plus tard on puisse cocher la dernière colonne "retourner"

Ensuite la macro ne me copie aucune données.

maxime079 a écrit :

Cette macro me supprime les données dans la feuille MVTSTOCK , OR je veux garder toutes les données de cette feuille , pour que plus tard on puisse cocher la dernière colonne "retourner"

Il faut que tu lances la macro depuis la feuille FACTURE.
maxime079 a écrit :
maxime079 a écrit :

Ensuite la macro ne me copie aucune données voir exemple :

maxime079 a écrit :

je veux que un copier / coller des lignes vides correspondantes au numero de devis dans MVTSTOCK vers A16:E23

C'est pas contradictoire ? La macro ne copie que les lignes ou il y a un zéro dans la colonne B de la feuille MVTSTOCK. Ce n'est pas ce que tu veux ?

Si je veux qu'elle COPIE COLLIE les lignes ou en colonne B il n'y a rien , mais pas qu'elle coupe les données...

Re,

Teste avec cette macro :

Sub extraction()
'
' extraction Macro

    Application.ScreenUpdating = False
    '    Range("A7:E15").ClearContents
    With Sheets("MVTSTOCK")
        On Error Resume Next
        .ShowAllData
        .Cells.EntireRow.Hidden = False
        With .Range("A4:F4")
            If Not Sheets("MVTSTOCK").AutoFilterMode Then .AutoFilter
            .AutoFilter Field:=1, Criteria1:=Range("B3").Value
            .AutoFilter Field:=2, Criteria1:="<>" & 0
        End With
        n = .[_filterdatabase].Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1
        Range(Rows(16), Rows(16 + n - 1)).Insert shift:=xlDown
        .Range("_FilterDataBase").Offset(1).Resize(, 5).SpecialCells(xlCellTypeVisible).Copy [A16]
        Range("G15:J15").AutoFill Destination:=Range("G15:J" & 16 + n - 1)
    End With
End Sub

Quelques questions :

1-Dans ton ex-macro extraction, tu voulais supprimer les cellules A7:E15. Pourquoi ? (Dans la macro ci-dessus, j'ai désactivé la suppression)

2-Dans ta première image, tu souhaites l'insertion de 2 lignes car 2 lignes ont été copiées. Les colonnes G à J des lignes insérées doivent-elles contenir les mêmes formules que les lignes 15 et précédentes ? (toujours colonnes G à J)

3-La formule qui se trouve en J18 sur l'image doit-elle prendre en compte les nouvelles lignes insérées ?

Je vais essayer d'être plus clair et plus détaillant

Alors je veux que quand je rentre le numero devis en B3 , et que je clique sur le bouton " rechercher " (contenant ma macro Extraction() ) , je veux que cette dernière face :

1/ FEUILLE MVTSTOCK : copie de la plage de données contenant des données en B ( et seulement les données , pas les titres correspondants ( c'est à dire A4:E4 ) )

2/ FEUILLE FACTURE : les données copiées precédemment sont collées sur la feuille FACTURE dans la plage A15:E23 (ou A15:E16 comme sur mon imprimé ecran precedent, 15 et 16 correspondant aux deux lignes ou colonne B de MVTStock = 1

3/ FEUILLE FACTURE : insérer les lignes F15:J23 ( toujours sur l'exemple précedent, vu que j'ai deux lignes de copiées , donc 2lignes à ajouter en face

4/ Imprimé la zone d'impression

REMARQUE :

Il faut garder les données dans MVTSTOCK , donc les copier et non les couper !

Les plages H:J de la feuille FACTURE doivent contenir des formules . Oui , Ces dernière sont les mêmes que celle de la feuille DEVIS en colonnes G:I . Mais je ne sais pas si avec la macro en insérant une ligne , je peux faire apparaitre les recherches dans les cellules?

Oui la cellule J18 doit prendre en compte les nouvelles lignes car ce sera le total de la colonne J

Voici le fichier sur lequel je travaille :

En cliquant sur le bouton 36 de la feuille FACTURE, tout devrait marcher, mise à part l'impression. Que signifie imprimer la zone d'impression ? Tu avais une macro XL4 dans ton ancienne macro Validation(). Mais je ne m'y connais pas en XL4.

Pour que les lignes insérées soient prises en compte dans la formule de la cellule J18 (Prix à payer), change-la par celle-ci :

=SOMME(INDIRECT("J8:J"&LIGNE()-1))

re ,

Je sais pas si on va y arriver un jour lol

Bon, on va essayer un truc.

Dans le fichier que je t'ai passé. Fais ce que tu souhaites faire puis enregistre les actions que tu fais avec l'enregistreur de macros. Poste ensuite la macro enregistrée ici. Je vais essayer d'adapter

re ,

Voila en gros les manip

34tourmalet.rar (35.60 Ko)
3bonjour.docx (111.46 Ko)

Hum, d'après ta macro, tu insères les lignes copiées à la ligne 8 ??!

Alors que voici ce que tu me dis précédemment :

maxime079 a écrit :

2/ FEUILLE FACTURE : les données copiées precédemment sont collées sur la feuille FACTURE dans la plage A15:E23 (ou A15:E16 comme sur mon imprimé ecran precedent, 15 et 16 correspondant aux deux lignes ou colonne B de MVTStock = 1

Un minimum de rigueur serait la bienvenue !

Autant pour moi je regarderai pas sur ma bonne version, oui en ligne 8 juste en dessous de la ligne 7 qui contient les titres....désolé

Bonjour maxime,

Regarde le fichier joint. Pour la macro extraction, ça devrait être presque bon. Par contre, regarde pour l'impression, pas sûr que ça marche.

Pour la macro validation de ton fichier principal, peux-tu en poster le code ici ?

Dis-moi ce qui ne va pas.

capture d ecran 592 capture d ecran 593

bonsoir ,

Alors la macro marche pour un devis 1 , mais pour un devis 2 ou 3 etc ca ne fonctionne pas aucun ligne ne s'ajoute dans la feuille DEVIS .

Peut etre cela est due au fait que quand je valide devis 1 , il apparait dans la feuille MVTSTOCK , alors que pour les devis 2 3 etc aucunes données n'apparaissent dans le tableau de MVTSTOCK...

Tu veux le code de la macro validation , mais tu l'as dans le dernier fichier deja non?

Rechercher des sujets similaires à "code pas afficher ligne vide"