Je cherche depuis 2 jours et je n’arrive pas à trouver de solution à mon problème de formule sur Excel.
Vous en connaissez surement beaucoup plus que moi donc je fais appel à vos connaissances.
J’ai un fichier avec 2 feuilles: “Base” qui est comme son nom l’indique ma base de donnée et “Résultat” qui est le résultat que je souhaiterais obtenir.
Sur ma feuille “Résultat”, grâce à mon menu déroulant je choisis mon numéro de facture et dessous j’aimerais pouvoir récupérer les informations de ma base en fonction de ce numéro de facture.
Petit plus j’aimerais que quand il n’y a pas de quantité (case vide) pour une référence, que cette ligne de référence n’apparaisse pas et que excel aille chercher tout seul la référence suivante.
T’aider: OUI, mais je pense avec les VRAI conditions
Car là je pense beaucoup plus à un tarif à appliquer par rapport à des clients que pour des N° de Facture
Si, vraiment, c’est par rapport à des N° de Facture, eh bien il faut déjà reprendre tout depuis le départ
-1) une base de données contient des Ref ou Articles unique (et logiquement sans cellules vides)
-2) Une base de données ne contient SURTOUT pas de cellules fusionnées
Bref, une BDD (Base de données) est une feuille que l’on remplit, soit à la main, soit par un USERFORM en VBA pour entrer les infos que l’on désire se servir pour une application.
Donc, vu l’exemple, et vu que l’on ne sait pas tout, (car je suppose que la liste est surement plus longue),
soit on travaille sur Office ACCESS qui lui gère les BDD, où alors il faut beaucoup plus d’infos.
Voici une proposition par formule feuilles “Base(2) et Résultat(2)”:
Déjà, comme le dit @Mimimathy, pas de cellules fusionnées autant que possible, souvent source d’erreur et / ou de difficulté a faire des formules et / ou du VBA.
J’ai donc remanier les 2 tableaux comportant toutes les références et désignations colonnes “A & B” des 2 feuilles et les colonnes “C, D, E” de a feuille “Base(2)” comportant les factures.
Dans cette situation, on ne peu pas supprimer les lignes vides.
Mais c’est une proposition, à toi de l’adapter si elle te convient, sinon @Mimimathy te fera quelque chose en VBA avec les informations supplémentaires qu’il demande.
Oui, donc si la proposition convient à @GaelleM, il faudra dans ce cas que tu t’y colle car je ne sais pas convertir ma formule via le VBA et “en même temps”, comme dirait quelqu’un supprimer les lignes vides à chaque recherche de facture dans la cellule “B2”.
Merci pour vos réponses. Il me faudrait vraiment les informations mais sans case vide.
Je vous ai envoyé le vrai fichier avec des données fausses pour que vous puissiez voir sur quoi je vais travailler.
Dans mon idée première, je pensais ne compléter que l’onglet base de facturation et ensuite tous les autres onglets se rempliraient tout seuls.
Ce sont les cases jaunes où j’aimerais mettre des formules pour que je ne sois pas obligé de tout retaper à chaque fois.
Je n’ai pas encore fait l’onglet Chiffre d’affaires, mais je ne pense pas que les formules soient très compliquées.
Bonjour,
J’essaie d’apporter un peu d’eau au moulin, avec une remarque sur la “Base”, qui n’en ai pas une,j’imagine même pas la maintenance.
Mon conseil serai d’avoir tout d’abord une liste : une colonne par TYPE d’information,et une ligne par information concrète, comme l’explique MDO.
La 1ere question est plutot : Comment entrez vous les données?
Car avec votre approche, vous obligez la presence d’une ref dans une facture où elle n’a rien a faire.
Est-ce envisageable de changer la base comme ceci ?
Bonjour,
Je ne peux pas supprimer ma référence car elle est obligatoire.
Je ne veux pas faire mes saisies sous le format que vous proposez car cela triplerait le temps de saisie d’une facture.
Je peux enlever la colonne des désignations que je pourrais retrouver facilement par contre.
Je peux également créer un onglet supplémentaire si cela peut aider et je le cacherais par la suite.
Voilà avec une petite macro, en modifiant le N° de facture le reste s’affiche
La macro :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F2")) Is Nothing Then 'Sur Chgt cellule F2
Dim i%, j%, col%, NoFact$
NoFact = Cells(2, 6).Value 'N° Facture
col = Application.WorksheetFunction.Match(NoFact, Feuil4.Rows(3), 0) 'N° de la colonne
j = 18
Feuil5.Range("B18:F34").ClearContents 'Efface les données
For i = 10 To 24 'Boucle sur les produits si case non vide
If Feuil4.Cells(i, col).Value <> "" Then
Cells(j, 2) = Feuil4.Cells(i, 1)
Cells(j, 3) = Application.WorksheetFunction.Index(Feuil3.Range("B4:B18"), _
Application.WorksheetFunction.Match(Feuil5.Cells(j, 2), Feuil3.Range("A4:A18"), 0))
Cells(j, 5) = Feuil4.Cells(i, col)
Cells(j, 6) = Application.WorksheetFunction.Index(Feuil3.Range("C4:C18"), _
Application.WorksheetFunction.Match(Feuil5.Cells(j, 2), Feuil3.Range("A4:A18"), 0))
j = j + 1
End If
Next i
End If
End Sub
Hello,
Un exemple avec une formule (matricielle forcément).
Ton modèle de données facilite la saisie, mais complexifie la recherche.
J’ai essayé de l’éclater pour qu’il fois le plus lisible.
En gros on reconstitueles num de ligne dans lesquels la quantité est saisie, et les numero des colonnes de la factures correspondante, apres c’est juste un indirect adresse pour afficher le contenu correspondant
Merci beaucoup Mimimathy, je n’ai rien compris à ton truc mais cela fonctionne super bien. Je crois que je vais essayer de me pencher un peu sur ces histoires de Macro car on peut faire plein de truc cool avec apparemment. Merci beaucoup de ton temps passé.
Merci beaucoup également à WildDigiSoft, cela fonctionne aussi et c’est de mon niveau pour comprendre. Donc je vais me pencher dessus.