Recherche et copie de valeurs selon un critère validé
Bonjour,
Je fais appel une nouvelle fois à votre aide pour élaborer une fonction, le forum donne certaines pistes, mais la fonction est assez particulière puisqu'elle fera appel trois feuilles différentes.
Je vous joins un fichier exemple :
En feuille "Order" lorsque je sélectionne "Oui" avec le menu déroulant en colonne "F" alors
(Lorsque qu'une ligne est validée "Oui" cela signifie que la commande est bien arrivée et que l'on peut intégrer les valeurs de la commande à notre stock)
- Pour la ligne validée "Oui"
- On recherche la valeur en colonne "A" et la valeur en colonne "G" (recherche de deux valeurs pour plus de sécurité)
Critères de recherche :
Feuille "Orders" Date (ilign, A)
Feuille "Orders" Montant (ilign, G)
- Cette recherche s'effectue sur la feuille "Archives entrées" sur la plage ("$M4:$AAZ1000")
- Trouver la colonne qui correspond aux deux critères de recherche
Correspondance des critères :
Feuille "Orders" Date (ilig, A) = Feuille "Archives entrée" Date (2, jcol)
Feuille "Orders" Montant(ilig, G) = Feuille "Archives entrée" Montant (3, jcol)
Une fois la colonne trouvé en feuille archive:
- Faire la somme par ligne de toutes les valeurs ayant eu un "Oui"
En feuille "Tableau de bord""
- Intégrer la somme par ligne réalisée en colonne "J"
Vous pourrez voir le module "Fonction" où pas mal de macro ont été réalisé.
Dont notamment une pour réaliser la somme des valeurs en archives sorties et à intégrer en feuille tableau de bord.
L'idée de base de ma demande, pour les entrées de stock, est de pouvoir comptabiliser les produits commandés, non pas à la commande, mais à la livraison.
J’espère que ces explications sont suffisantes et claires.
Merci par avance,
Bonne journée
Bonjour,
Pour augmenter tes chances d'obtenir des réponses claires et ciblées... tu as intérêt à saucissonner tes questions ....
Bonjour James,
D'habitude on demande aux jeunes forumeurs comme moi de joindre un fichier pour mieux comprendre la demande.
Je l'ai fait dans le premier message, je vais seulement essayer de vous présenter ma demande différemment en espérant que ce soit mieux saucissonner comme vous dites.
J'aimerai créer une fonction qui permettrait de faire la somme de chaque ligne d'une feuille.
Sur cette feuille une colonne = un projet.
La première ligne à calculer se situe à la ligne 4 et commence à partir de la colonne 9.
On fait la somme de chaque ligne jusqu'à la dernière ligne
La formule "somme" serait comprise dans cette plage de cellules "4;9 à "4:;jusqu’à la dernière colonne"
Mais
J'aimerai exclure certaines colonnes de la formule "somme"
La condition d'exclure ou non une colonne se réalise sur une autre feuille organiser en ligne.
Sur cette feuille une ligne = un projet
Il faut vérifier si la condition "Oui" a été choisie.
Si "Oui" est choisit" on peut faire la somme de ce projet, si rien n'est sélectionné on ne fais pas la somme.
Le plus complexe, pour moi, est de faire le lien entre les projets organisés en ligne sur une feuille avec les même projets organisés en colonne sur une autre feuille.
Vous voyez un peu mieux mon délire j'espère ?
Merci et bonne journée
Mon problème n'est apparemment toujours peu clair.
Alors voici un début de ma fonction 'recherche'. J'aimerai avoir votre avis dessus.
Malheureusement je n'ai pas eu le temps de la tester.
Public Sub recherche_entrée()
Dim Ligne As Long
Dim LignEntrée As Long
Dim ColArchives As Long
Dim iEntrée As Long
Dim jArchives As Long
LignEntrée = Sheets("Entrée").Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne feuille 'Entrée'
ColArchives = Sheets("Archives Entrées").Cells(1, Cells.Columns.Count).End(xlToLeft).Column 'dernière colonne feuille 'Archives Entrées'
With Sheets("Entrée")
If .Cells(LignEntrée, 6) = "Oui" Then
With Sheets("Archives Entrées")
For jArchives = 9 To ColArchives 'Boucle sur toutes les lignes en commençant de la colonne 9 de la feuille 'Archives Entrées'
Ligne = 0
For iEntrée = 4 To LignEntrée 'on commence à la ligne 4, on recherche toutes les lignes de la feuille 'Entrée''
If .Cells(1, jArchives) = Sheets("Entrée").Cells(LignEntrée, 3) Then 'on cherche la correspondance'
Ligne = iEntrée 'on note la ligne'
Exit For
End If
Next iEntrée
If Ligne > 0 Then 'si on a trouvé une correspondance'
.Cells(3, ColArchives) = "Terminé" 'on dit que c'est 'Terminé'
End If
Next jArchives 'recherche suivante'
End With
End If
End With
End SubBonjour à tous,
Je relance ce sujet parce que je n'ai toujours pas trouvé de solution à mon problème.
J'ai réalisé une ébauche de code mais celui-ci ne fonctionne pas.
Pouvez-vous m'aider, merci.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne As Long
Dim LignEntrée As Long
Dim ColArchives As Long
Dim iEntrée As Long
Dim jArchives As Long
Dim DateCommande As Date
Dim DateArchives As Date
Dim RefCommande As String
Dim RefArchives As String
LignEntrée = Sheets("Commande").Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne feuille 'Entrée'
ColArchives = Sheets("Archives Entrées").Cells(1, Cells.Columns.Count).End(xlToLeft).Column 'dernière colonne feuille 'Archives Entrées'
DateCommande = Sheets("Commande").Cells(LignEntrée, 1)
DateArchives = Sheets("Archives Entrées").Cells(2, ColArchives)
RefCommande = Sheets("Commande").Cells(LignEntrée, 3)
RefArchives = Sheets("Archives Entrées").Cells(1, ColArchives)
With Sheets("Commande")
If .Cells(LignEntrée, 6) = "Reçu" Then
With Sheets("Archives Entrées")
For jArchives = 9 To ColArchives 'Boucle sur toutes les lignes en commençant de la colonne 9 de la feuille 'Archives Entrées'
Ligne = 0
For iEntrée = 4 To LignEntrée 'on commence à la ligne 4, on recherche toutes les lignes de la feuille 'Entrée''
If RefArchives = RefCommande And DateArchives = DateCommande Then 'on cherche la correspondance'
Ligne = iEntrée 'on note la ligne'
Exit For
End If
Next iEntrée
If Ligne > 0 Then 'si on a trouvé une correspondance'
.Cells(3, ColArchives) = "Terminé" 'on dit que c'est 'Terminé', j'aimerai remplir la colonne entière d'une couleur'
End If
Next jArchives 'recherche suivante'
End With
End If
End With
End SubCi-joint un fichier test :