Recherche d'une valeur dans un champs correspondant à une valeur non nulle
Bonjour à tous
Je fais une recherche de valeur texte correspondant à des nature d'ouvrages par l'intermédiaire de deux boucle imbriquées (Plusieurs lignes et plusieurs colonnes) les colonnes correspondant à des localisations différentes.
Jusqu'à présent cela fonctionne.
Ci après ma macro
Sub Devis()
Dim i As Long
Dim j As Long
Dim DerniereLigne As Integer
Dim Val As Variant
Dim col As long
Dim Unit As String
Dim Cprix As String
j = 5
'Application.ScreenUpdating = False
Sheets("Ouvrage").Select
With ActiveWorkbook.Worksheets("Ouvrage")
'calcul le nombre de lignes
DerniereLigne = .Range("A1").End(xlDown).Row
MsgBox DerniereLigne
col = 12
For col = 12 to 22
i = 1
Do
Val = Cells(i, col).Value
Unit = Range("J" & i).Value
Cprix = Range("I" & i).Value
If Val <> 0 Then
IF I = 1 Then
. Range("H" & i).Value = WorksheetFunction.VLookup(. Cells(i, col).Value, Sheets("Métrés").Range("B2:C13"), 2, False)
Val = 0
Unit = 0
Cprix = o
End If
Range("H" & i).Copy Destination:=Sheets("Devis").Range("B" & j)
Sheets("Devis").Range("D" & j) = Val
Sheets("Devis").Range("A" & j) = Cprix
Sheets("Devis").Range("C" & j) = Unit
j = j + 2
End If
i = i + 1
Loop Until i = DerniereLigne
Next COL
End With
sheets("Devis").Activate
MsgBox "L'enregistrement est terminé", vbInformation
End Sub
Mais je souhaite intercaler dans la copie de mes natures d'ouvrages sur la feuille "devis" la tête de chapitre (Division) dans laquelle sont enregistrées les natures d'ouvrages. Je nommerai la variante correspondante Div se trouvant dans la colonne D de la feuille Ouvrage.
Je les ai synthétisées sur la feuille Division afin de
- Condition 1 pouvoir récupérer uniquement celles dont les valeurs des natures ouvrage ne sont pas nulles,
- Condition 2 et une seule fois même si il existe plusieurs natures d'ouvrages pour chaque division.
J'ai récapitulé pensant que cela pouvait être le besoin, un code et les numéros de lignes (début et fin) de chaque division pour créer peut être une boucle supplémentaire.
Merci d'avance
cordialement