Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

test conditionnel

n0str0m0

XLDnaute Nouveau
Bonsoir,
J'ai un soucis pour faire un test sur une cellule qui 1 contient une formule et qui peut etre modifié a la main par du texte

Je me permet de vous soumettre le code (pardon au puriste mais je debute )

Code:
Private Sub Facturation_Click()
' Extraction des devis a facturer
' Effacement des donnees
Sheets("Facturation").Activate
ActiveWorkbook.ActiveSheet.UsedRange.Select
Selection.Delete
'Selection de la feuille Suivi Commande
Sheets("Suivi Commande").Activate

' Initialisation des variables
Dim derniere, compteur, i, j, NumLigne, Mois, Mois_M, cptligne
' Determination de la valeur de la derniere ligne
derniere = Application.WorksheetFunction.CountA(ActiveSheet.Range("$J:$J")) + 1
' Debut de la ligne
NumLigne = 3
' Initialisation du compteur
compteur = 0
cptligne = 0
' Sélection du mois choisi
Mois = Me.ComboBox1.Value
    Select Case Mois
        Case "janvier"
            Mois_M = 1
        Case "février"
            Mois_M = 2
        Case "mars"
            Mois_M = 3
        Case "avril"
            Mois_M = 4
        Case "mai"
            Mois_M = 5
        Case "juin"
            Mois_M = 6
        Case "juillet"
            Mois_M = 7
        Case "août"
            Mois_M = 8
        Case "septembre"
            Mois_M = 9
        Case "octobre"
            Mois_M = 10
        Case "novembre"
            Mois_M = 11
        Case "décembre"
            Mois_M = 12
    End Select
' boucle de selection des lignes
    For i = NumLigne To derniere
        If Sheets("Suivi Commande").Cells(i, 1) <> "" Then
            If Sheets("Suivi Commande").Cells(i, 20) <> "En Attente" Then Else
            MsgBox "" & i & Cells(i, 20)
                If Sheets("Suivi Commande").Cells(i, 20).HasFormula Then GoTo Num Else
               If Sheets("Suivi Commande").Cells(i, 20) = Mois Then GoTo Suite Else
Num:                    If Month(Sheets("Suivi Commande").Cells(i, 20)) = Mois_M Or Sheets("Suivi Commande").Cells(i, 21) = "Non Facturé" Then
Suite:                  Sheets("Suivi Commande").Cells(i, 1).EntireRow.Copy
                        compteur = compteur + 1
                        Sheets("Facturation").Rows(compteur).PasteSpecial
                        j = i + 1
                        Do While IsEmpty(Sheets("Suivi Commande").Cells(j, 2)) And j <> derniere
                        Sheets("Suivi Commande").Cells(j, 1).EntireRow.Copy
                        compteur = compteur + 1
                        Sheets("Facturation").Rows(compteur).PasteSpecial
                        j = j + 1
                        Loop
                        cptligne = cptligne + 1
                    End If
               End If
            
        Next i
MsgBox "Nb de devis à facturer pour " & Mois & " est de " & cptligne, vbOKOnly, "Extraction pour la facturation"
Sheets("facturation").Visible = True
Sheets("facturation").Activate
End Sub


Je bloque sur le test de savoir si la cellule contient une formule alors copie et si elle contient le texte copie !
cela se recoupe et me genere des erreurs

J'attends avec impatiente vos lumieres
N0str0m0
 

Cousinhub

XLDnaute Barbatruc
Re : test conditionnel

Bonsoir,
juste en regardant ton code, et donc sans savoir à quoi il pourrait bien servir, cette ligne m'interpelle :

Code:
If Sheets("Suivi Commande").Cells(i, 20) <> "En Attente" Then Else

If ..... Then ..... Else : le tout sur une ligne, sans attendre le résultat de la condition....


pour que cela soit plus compréhensible, il serait peut-être mieux de joindre un fichier exemple....
 

n0str0m0

XLDnaute Nouveau
Re : test conditionnel

En fait le probleme se pose surtout sur le "hasformula" et le "month" ou je n'arrive pas a faire eviter la cellule qui ne contient pas de date par le if month ....

Pour ta remarque bhbh je vais corriger de ce pas


N0str0m0
 

Cousinhub

XLDnaute Barbatruc
Re : test conditionnel

Re-,
tu fais un select case, avec un comme option

Code:
Mois = Me.ComboBox1.Value
:

et ensuite, en fonction de la valeur, tu lui détermines une variable :


Code:
Mois_M

Puis, tu réutilises Mois, pourquoi ne pas utiliser Mois_M?

Code:
If Sheets("Suivi Commande").Cells(i, 20) = [COLOR="Red"]Mois[/COLOR]

Mais, sans voir la finalité, en aveugle.....
 

n0str0m0

XLDnaute Nouveau
Re : test conditionnel

bhbh,

Je ne peux pas te donner le fichier pour des raisons de confidentialités mais l'idée est la suivante :
j'ai mes cellules de la colonne J qui peuvent contenir soit une formule soit une date (mise a la main)
je veux copier les lignes dans une autre feuille si elles sont du mois choisi !

et en fait je n'arrive pas a m'en dépêtrer

N0str0m0
 

Cousinhub

XLDnaute Barbatruc
Re : test conditionnel

Re-,
si tu as une date issue d'une formule ou écrite à la main dans une cellule, ce test te donne un msg box, pour peu le mois soit le mois d'avril

Code:
If Month([F2]) = 4 Then MsgBox "Avril"
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…