Code VB, ne pas afficher ligne vide

maxime079 a écrit :

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 .

Tu parles de quelle macro ? Extraction ? Parce qu'à aucun moment on ajoute quoi que ce soit dans la feuille DEVIS non ??!
maxime079 a écrit :

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

En fait je te demandais au cas où ce n'était pas la même.
maxime079 a écrit :

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...

J'ai modifié la macro validation. A toi de tester :
Sub Validation()
'
' Validation Macro
'

'
    Application.ScreenUpdating = False
    Sheets("DEVIS").Range("A26:H26").Copy
    With Sheets("Historique devis reserv.")
        .Range("A3:H3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        .Rows("3:3").Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End With
    Sheets("DEVIS").Range("A29:E36").Copy
    With Sheets("MVTSTOCK")
        On Error Resume Next
        .ShowAllData
        .Cells.EntireRow.Hidden = False
        .Range("A" & .Range("A65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        derlig = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & derlig & ":A65536").EntireRow.Hidden = True
        For i = 5 To derlig - 1
            If .Cells(i, 2) = 0 Then .Rows(i).EntireRow.Hidden = True
        Next i
    End With
    Sheets("DEVIS").Select
    ExecuteExcel4Macro "PRINT(1,,,3,,,,,,,,2,,,TRUE,,FALSE)"
    Range("A9:G16,E4:E5,B29:E36").ClearContents
    Range("E3") = Range("E3") + 1
End Sub

Si y'a quelque chose qui va pas, dis-moi ce que tu souhaites effectivement obtenir.

Edit : post précédent En fait j'ai reussi à la faire fonctionner comme je veux

Dernier problème sur cette image avec le numéro 2 ...

En effet dans l'encadrer 2 , j'ai des recherches (voir fichier ) . Par exemple en M42 dans ce fichier j'ai :

=SI(D28="";RECHERCHEV(C28;numforfait;2;0);RECHERCHEV(D28;numunité;2;0))

En M43 : =SI(D9="";RECHERCHEV(C9;numforfait;2;0);RECHERCHEV(D9;numunité;2;0))

Etc

Le problème est que à chaque clique sur mon bouton 36 ( donc à chaque nouveau lancement de la macro extraction() ) , les celulles changent et se décalent , que je les fige ou pas...

Enfin je sais pas si c'est clair ou pas , désolé de t'embetter ...

re,

maxime079 a écrit :

le problème est sur la macro extraction() .

Cette dernière m'insère bien les lignes vides etc comme je veux , mais elle me supprime mes colonnes I:J ( voir 1 ) , contenant mon total à payer , mode de paiement etc

En 1 on peut voir qu'elle me supprime ma ligne contenant les titres : N°contrat , Nom client, localisation , date de sortie , durée et qu'elle me remonte également cette ligne en dessous de la dernière ligne remplie ( ici 84 en dessous de la ligne 9)

Tout ça est normal ! Car tu changes la structure de ton fichier ! En fait, pour masquer les lignes vides, je me positionne à la dernière ligne de ta facture en me repérant par rapport à la ligne contenant les mots "Prix à payer". Ligne qui normalement se trouve 2 lignes au-dessus de "mode de paiement", qui se trouve à la ligne 39 dans ta 2è capture d'écran.

De plus, tu dis :

maxime079 a écrit :

En 1 on peut voir qu'elle me supprime ma ligne contenant les titres : N°contrat , Nom client, localisation , date de sortie , durée

Dans mon fichier, les titres : N°contrat , Nom client, localisation , date de sortie , durée, n'existent même pas ! Donc ils ne peuvent pas être supprimés.

Une petite remarque : décrire les erreurs que tu rencontres c'est bien, me dire ce que tu souhaites obtenir c'est mieux ! Ne me laisse pas deviner !

Exemple :

maxime079 a écrit :

Ensuite quand je complète manuellement la ligne contenant les titres ( voir 4) , et en relançant la macro extraction() , on voit que toutes mes validations précédentes apparaissent....(voir 3)

J'en déduis quoi ? Que les lignes doivent être masquées ? Ou supprimer ?

Peut-être qu'il serait plus judicieux que je travaille sur le même fichier que toi, en gardant exactement la même structure et en laissant assez de données pour en faire quelque chose.

-- 01 Fév 2010 16:10 --

maxime079 a écrit :

Enfin je sais pas si c'est clair ou pas

C'est clair mais c'est faux

En M42 du fichier joint, j'ai pas de formule

Mais bon, je crois avoir compris ce que tu veux. J'ai intégré l'écriture des formules dans la macro suivante :

Sub extraction()
'
' extraction Macro

    Application.ScreenUpdating = False
    Range("A8:E15").ClearContents
    Cells.EntireRow.Hidden = False
    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
        If n > 0 Then
            Range(Rows(8), Rows(8 + n - 1)).Insert Shift:=xlDown
            .Range("_FilterDataBase").Offset(1).Resize(, 5).SpecialCells(xlCellTypeVisible).Copy [A8]
            Range("G" & 8 + n & ":J" & 8 + n).AutoFill Destination:=Range("G8:J" & 8 + n)
            Range("N" & 8 + n).AutoFill Destination:=Range("N8:N" & 8 + n)
            Range("A" & 8 + n & ":N" & 8 + n).AutoFill Destination:=Range("A8:N" & 8 + n), Type:=xlFillFormats
            Range("M8:M" & 8 + n).FormulaR1C1 = "=IF(RC[-9]="""",VLOOKUP(RC[-10],numforfait,2,0),VLOOKUP(RC[-9],numunité,2,0))"
            Range("A8:N" & 8 + n - 1).Borders.Weight = xlThin
            Range("A7:J7").Borders.LineStyle = xlDouble
        End If
    End With
    derlig = Cells.Find("Prix à payer", LookIn:=xlValues, lookat:=xlPart).Row - 1
    For i = 8 To derlig
        If Cells(i, 1) = "" Then Rows(i).EntireRow.Hidden = True
    Next i
    ExecuteExcel4Macro "PRINT(1,,,1,,FALSE,,,,,,2,,,TRUE,,FALSE)"
End Sub

Par contre, tu mets maintenant la formule en colonne M alors qu'avant elle était en colonne N. Dans la macro, la colonne N est traitée (inutilement ? A toi de me dire) mais ça n'affecte pas trop la macro.

T'es un chef !!!!!!!!!!!!!!

En PJ mon fichier final .

Dernière aide si ca te dérange pas .... je souhaite insérer une message box dans la macro VALIDATION(), j'ai réalisé cette box sous le nom Messagebox()

Le problème est que je n'arrive pas à la mettre dans ma macro VALIDATION, car je n'arrive pas à mettre les variables

Je souhaite que la macro fasse une recherche de E3 de la feuille DEVIS , dans la colonne A de MVTSTOCK . Et que si le numéro de devis existe deja alors ma message box apparait...

En d'autre terme :

Exemple :

Si E3 = 1 et que dans la colonne A de la feuille MVTSTOCK il y a déja 1

alors message box apparait

sinon E3 + 1

Ça a le mérite d'être clair

Je vois que dans ton fichier, tu n'a pas pris la macro validation que j'ai postée précédemment. J'ai donc fait une modif de ta macro actuelle pour y insérer le MsgBox.

Sache que pour intégrer un message box dans ton code, je pense qu'il est inutile de créer une macro messagebox() car c'est plus difficile ! Vaut mieux l'intégrer directement. Voici la macro validation mise à jour. A toi de tester et de me dire si ça va pas :

Sub Validation()
'
' Validation Macro
'

'
    Application.ScreenUpdating = False
    Sheets("DEVIS").Range("A26:H26").Copy
    With Sheets("Historique devis reserv.")
        .Range("A3:H3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        .Rows("3:3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End With
    Set c = Sheets("MVTSTOCK").Columns(1).Find([E3], , xlValues, xlWhole)
    If Not c Is Nothing Then
        'En tête texte
        Answer = MsgBox("Ce numéro de devis existe déja !" & vbCrLf & "Voulez vous continuer ?", vbCritical + vbYesNo, "Attention !")
        'Code si bouton non
        If Answer = vbNo Then MsgBox "Changer le numéro de devis !", vbExclamation: Exit Sub
        'Code si bouton oui
        MsgBox "ATTENTION !"
    End If
    Sheets("DEVIS").Range("A29:E36").Copy
    With Sheets("MVTSTOCK")
        .Cells.EntireRow.Hidden = False
        .Range("A" & .Range("A65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        derlig = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & derlig & ":A65536").EntireRow.Hidden = True
        For i = 5 To derlig - 1
            If Application.WorksheetFunction.CountBlank(.Range("A" & i & ":E" & i)) > 1 Then .Rows(i).EntireRow.Hidden = True
        Next i
    End With
    Sheets("DEVIS").Select
    '    ExecuteExcel4Macro "PRINT(1,,,3,,,,,,,,2,,,TRUE,,FALSE)"
    Range("A9:G16,E4:E5").ClearContents
    Range("E3") = Range("E3") + 1
End Sub

Bne chef j'ai juste un mot à dire MERCIIIIIIIIIIII , t'es vraiment trop fort et tu m'as bien dépanné , les macros sont parfaites , maintenant j'ai une rechercheV qui fonctionne pas dans FACTURE mais bon je vais essayer de résoudre cela ^^

re,

maxime079 a écrit :

maintenant j'ai une rechercheV qui fonctionne pas dans FACTURE mais bon je vais essayer de résoudre cela ^^

Pendant qu'on y est, autant résoudre le problème ensemble ! Même si ça diffère un peu de ton sujet d'origine.

Donc quel est le problème ?

Le problème se trouve sur la feuille FACTURE , en colonne I , impossible de trouver la recherchev qui me permet de reconstruire le prix . Je fais cette recherche à partir du numero en colonne M ...

J'ai regardé ton problème et il semblerait que cela soit plus long à résoudre que prévu. Je te conseille donc d'ouvrir un nouveau sujet pour ça. Tu peux joindre le fichier épuré suivant pour ton nouveau post. Je n'ai gardé que les feuilles FACTURE et TARIF (étant donné que les formules en colonne I de la feuille FACTURE fait seulement référence à la feuille TARIF), j'ai également enlevé toutes les macros.

D'accord , je vais ouvrir un nouveau sujet , merci encore pour tout

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