VBA - recherche avec plusieurs conditions

18classeur1.xlsx (31.79 Ko)

Bonjour,

Je fais appel à votre savoir. Après plusieurs recherches je n'ai pas réussi à trouver de quoi faire une macro.

J'ai un fichier avec une feuilles des données (commande, montant, ....), un autre onglet contenant une fiche.

Je souhaiterai une macro pour que la fiche soit remplie avec les infos nécessaires (montant, quantité, numéro spé).

Une fiche est lié à un numéro de commande. Un numéro de commande peut contenir plusieurs numéro spé. Si pas de numéro spé, alors il n'y a rien à reporter dans la fiche.

Il faudrait que pour chaque ligne parcourue par la macro qu'il y est marqué "fait" dans une colonne.

Ainsi à chaque fois que l'on lance la macro pour recherche la commande suivant, elle repart à la prochaine ligne sans marqué "Fait".

Je mets un fichier bricolé pour mieux expliquer le besoin.

Cela fait plusieurs jours que je me creuse la tête et je bloque vraiment. Si vous pouvez m'aider ce serait vraiment super.

Merci.

bonjour

c'est faisable avec une matricielle qui ira chercher en fonction d'une reference, ou alors en vba

mais pour mettre au point ,il faut imperativement joindre une piece jointe bien representative de ton fichier

bon....... en attendant(la pj) tu peux toujours filtrer ou un TCD en prenant comme critere le n° de client

cordialement

tulipe_4 a écrit :

bonjour

c'est faisable avec une matricielle qui ira chercher en fonction d'une reference, ou alors en vba

mais pour mettre au point ,il faut imperativement joindre une piece jointe bien representative de ton fichier

bon....... en attendant(la pj) tu peux toujours filtrer ou un TCD en prenant comme critere le n° de client

cordialement

Bonjour Tulipe,

Merci de t'intéresser à mon blocage. Le fichier que j'ai mis en pièce jointe est représentatif de mon fichier. L'onglet CRA contient les données que je veux récupérer pour alimenter l'onglet 'Modèle'. Dans ma tête je voulais faire deux macro. Une qui recherche un numéro de commande non traité pour récupérer toutes les infos avec les numéros spé liés à ce numéro de commande. Une fois les infos (j'ai essayé de précisé dans les fichiers quelles infos étaient nécessaires) récupérées, une deuxième macro pour transformer la fiche en PDF.

Sur le fichier que j'ai mis en pièce jointe, onglet 'Modèle' j'ai détaillé les besoins.

Si cela ne te semble pas clair je détaillerai plus.

D'avance merci.

Cordialement.

Bonjour,

J'ai essayé d'avancer sur mon code, qui marche à peu près mais par moment on n'a l'impression qu'il perd pied.

cependant que je fais du pas à pas cela semble ok.

Pouvez vous m'aider à le fiabiliser ?

pou rappel le besoin est de relever des données pour remplir une fiche (un numéro de commande par fiche), puis d'en faire un PDF, puis de passer au prochain numéro de commande en marquant chaque ligne. Chaque numéro de commande identique doit être contenu dans la même fiche. Ce que j'appelle fiche et juste un pseudo tableau sur excel que je souhaite editer en PDF à chaque numéro de commande.

Option Explicit
' l'ojectif de cette macro est de récupérer pour un même numéro de commande tous les numéros spé qui y sont liés. Le mois est défini par une liste
' de choix dans l'onglet 'Modèle'
Sub Suivant()

Dim cmois As Date
Dim i As Integer

Application.ScreenUpdating = False

' tri croissant colonne K
ActiveWorkbook.Worksheets("CRA").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("CRA").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "K2:K33335"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("CRA").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Range("A3").Select
' delete donnés dans la fiche de l'onglet 'modèle'
Sheets("Modèle").Select

    Range("S13:AI15").Select
    Selection.ClearContents
    Range("J22:R25").Select
    Selection.ClearContents
    Range("A36:AI49").Select
    Selection.ClearContents

'choix du mois
cmois = Range("AT3").Value
If "42464" = cmois Then
GoTo avr
Else
Range("AR3").Select
Exit Sub

' code à faire pour chaque mois
avr:
Dim derln As Long
Dim stat As String
Dim lncom As Long

'repère 1er ligne de la fiche onglet 'Modèle
lncom = 36
'repère 1er ligne vide onglet 'CRA' et statut de la ligne
Sheets("CRA").Activate
Suite:
 If Range("AX3") = "" Then
        derln = 3
    Else
        derln = Range("AX2").End(xlDown).Row + 1
    End If
  If Range("K" & derln) <> "" Then
  Range("AX" & derln) = "Vu"
     Else
 'mesage si toutes le lignes (avec numéro de commande) ont été vues
    MsgBox "fin du cra"
Exit Sub
End If
  If Range("K" & derln) = Sheets("Modèle").Range("J22") Then
  If Range("AU" & derln) <> "" Then
  GoTo SAP
 Else: GoTo Suite
End If
End If
SAP:
  If Range("AU" & derln) = "" Or Range("A" & derln) = "N" Then
  GoTo Suite
  Else

RE:
Sheets("CRA").Range("K" & derln).Copy
Sheets("Modèle").Range("J22").PasteSpecial
Sheets("CRA").Range("F" & derln).Copy
Sheets("Modèle").Range("S13").PasteSpecial

Sheets("CRA").Range("AU" & derln).Copy
Sheets("Modèle").Range("AD" & lncom).PasteSpecial

Sheets("CRA").Range("L" & derln).Copy
Sheets("Modèle").Range("P" & lncom).PasteSpecial

Sheets("CRA").Range("AT" & derln).Copy
Sheets("Modèle").Range("T" & lncom).PasteSpecial

Sheets("CRA").Range("AW" & derln).Copy
Sheets("Modèle").Range("X" & lncom).PasteSpecial

Sheets("CRA").Range("AX" & derln) = "Créé"

derln = derln + 1
lncom = lncom + 1

If Sheets("Modèle").Range("J22") = Sheets("CRA").Range("K" & derln) And Sheets("CRA").Range("AU" & derln) <> "" Then
GoTo RE
Else

If Sheets("Modèle").Range("J22") = Sheets("CRA").Range("K" & derln) Then
GoTo Suite
Else
  MsgBox "Fiche navette prête"
End If
End If

End If

End If

End Sub

D'avance merci.

Cordialement.


21test.xlsm (201.14 Ko)

avec le fichier c'est mieux

Rechercher des sujets similaires à "vba recherche conditions"