[Déplacé .Net --> VBA] Excel VB - Fonction rechercher et renvoi de données dans

cs_hop Messages postés 24 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 4 février 2010 - 2 févr. 2010 à 15:08
cs_hop Messages postés 24 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 4 février 2010 - 4 févr. 2010 à 17:31
Salut,

Je bosse sur une base de données fournisseurs sous Excel et je voudrais utiliser un formulaire pour simplifier la saisie et la modification.

La BDD est de la forme classique suivante :
Societe | nom | numéro de tel |
L1 GDF M. Dupond 04 75555 55
L2 ...
L3 ...

J'ai déjà fait un forumlaire de saisie pour ajouter une nouvelle ligne dans la BDD.
J'aimerai faire le chemin inverse c'est à dire pouvoir modifier une ligne déjà existante en recherchant le nom du fournisseur.

Je tappe le nom du fournisseur, appui sur le bouton recherche, requête pour recharger les informations et les mettre dans le formulaire pour modification.

Si vous avez une idée ou du codes s'en rapprochant que je puisse avancer. :)

Ci dessous Forumlaire existant de saisie d'une nouvelle ligne dans la BDD.


Sub transpose_dans_tableau()
    'Atteindre le formulaire et mémoriser les donées
    Sheets("Formulaire").Select
    Range("D11:D26").Select
    Selection.Copy
    'Test pour détermier la ligne ou coller les infos dans le tableau
    Sheets("BDD Fournisseurs").Select
    valeurA7 = Range("A7").Value
    If valeurA7 = "" Then
        Range("A7").Select
    Else
         Range("A6").Select
         Selection.End(xlDown).Select
         ligne_active_base = ActiveCell.Row
         Range("A" & ligne_active_base + 1).Select
    End If
    'Mémorise le n° de la ligne où coller les données
    ligne_active_base = ActiveCell.Row
    'Collage avec transposition
    Range("A" & ligne_active_base).Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    'Rendre vierge le formulaire
    Sheets("Formulaire").Select
    Range("D11:D26").Select
    Selection.ClearContents
    Range("D11").Select
    'Retourner dans le tableau
    Sheets("BDD Fournisseurs").Select
    Range("A1").Select
End Sub


Merci
Hop.

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
2 févr. 2010 à 15:36
Salut
Tu sembles à l'aise avec les méthodes de copier/coller pour stocker tes données.
Pour la recherche, il te suffit d'enregistrer une macro pendant que tu fais la manip suivante :
- Sélection feuille où se trouve ta DBB
- Sélection de la colonne entière où se trouvent tes références fournisseur que tu recherche
- Menu Edition + Rechercher
- Tu entres le nom recherché et tu cliques sur Suivant
Tu stoppes l'enregistrement de macro et tu auras le code dans un des modules.
Tu n'as plus qu'à remplacer le texte du nom recherché par la référence de la cellule dans laquelle l'utilisateur saisit le nom à rechercher + détecter la ligne de la sélection actuelle (position en fin de recherche) + Copier/Coller les infos dans ton formulaire d'affichage.

Si besoin d'une recherche "Suivant", procède de la même ma,ière pour savoir comment le traduire en code.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_hop Messages postés 24 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 4 février 2010
3 févr. 2010 à 11:39
Tu sembles à l'aise avec les méthodes de copier/coller pour stocker tes données.

Ah non pas du tout, j'utilise la technique du bidouillage de code existant ^^ et malheuresement je programme pas assez souvent tt capté.

J'ai vu comment marchais l'enregistrement de macro, merci.
Par contre pour la suite ça va être un peu chaud:
+ détecter la ligne de la sélection actuelle (position en fin de recherche) + Copier/Coller les infos dans ton formulaire d'affichage.



Hop.
0
cs_hop Messages postés 24 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 15:12
Bon, j'ai cherché j'arrive à
Selctionner la feuille
copier la cellule
changer de feuille

j'arrive pas à rechercher la valeur cellule
une fois la cellule atteinte je dois faire cellule + 1 sur la ligne
et copier la valeur



Hop.
0
cs_hop Messages postés 24 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 4 février 2010
4 févr. 2010 à 17:31
Bon j'ai fait juste un test sur une cellule avec la forumle RechercheV
J'aime pas trop le résultat d'abord parcque rechercheV regarde dans toutes les cellules de la matrice sélectionner alors que moi je veux faire un recherche que sur 1 colonne.
L'autre problème est que sela me copie la forumle alors qu'il me faut juste la valeur.
Dim Formule As String

    Range("D13").Select
    Sheets("Panel fournisseurs").Select
    Formule = "=RECHERCHEV(D13, 'Panel fournisseurs'!C7:G327, 3, FALSE)"
    Sheets("Formulaire").Select
    Range("D15").Select
    Selection = Formule



Hop.
0