UseForm VBA pour renseigner automatiquement des colonnes sur une autre feui

Bonjour,

​J'aimerai insérer un Usefrom (VBA) pour renseigner automatiquement les 4 premières colonnes de la feuille "calcul notes".

En fait, je veux faire en sorte qu'en fonction de la première colonne de la feuille "base de données" ("Références article") et des données des 3 autres colonnes, les colonnes "Référence article", "code matière"; "désignation" & "emplacement principale" de la feuille "calcul notes" se renseignent automatiquement grâce à une rechercheV par exemple (=RECHERCHEV(A3;'base de données'!A:B;2;FAUX)).

Ainsi, à chaque référence choisi, les lignes des colonnes y afférentes se renseignent au fur et à mesure lors de l'inventaire.

La seule condition est que, pour renseigner les colonnes de la feuille "calcul notes" mentionnées plus haut, la colonne "code matière" de la feuille "base de données" ne doit pas être vide.

A la base, On avait programmé une formule qui copie & colle les lignes concernée, mais cela n'est pas vraiment le but recherché. (voir code dans le vbasic pour la feuille "calcul notes").

J'ai essayé de considérer la colonne "Références articles" de la feuille "base de données" (A2:A1048576") comme une liste pour faciliter le renseignement automatique, mais ça n'a rien donné lors de la codification dans le combobox.

Dans l'attente de vous lire,

Cordialement

Bonjour

1. Userform : Votre fichier n'en contient pas

2. feuille Calcul notes : Vu que vous avez des formules dans les colonnes E et suivantes, la solution de copier -coller est la plus simple. via un simple code, il suffit de supprimer les données des colonnes A à D dans le feuille Calcul notes et ensuite d'importer les données de la feuille "Base de données" vers la feuille "calcul notes" en tenant compte du critère "code matière"
On évite les formules rechercheV ou Index equiv dans ce cas

Votre avis ?

Cordialement

Bonjour,

Je vous remercie pour votre retour.

En effet, j'ai dû supprimer le useform malencontreusement.

Pour ce qui est du copier-coller, effectivement c'est l'option la plus simple.

Par contre ça devient plus complexe quand on veut choisir LES lignes à afficher dans les 4 premières colonnes de la feuille "calcul notes".

Les formules dans les colonnes E et + sont liées aux 4 premières colonnes, donc de ce côté il n'y a pas vraiment de blocage je trouve.

Dans l'attente de vous lire,

Par contre ça devient plus complexe quand on veut choisir LES lignes à afficher dans les 4 premières colonnes de la feuille "calcul notes".

Pas sûr d'avoir compris... Dans vos 4 premières colonnes on ne doit avoir que les ref article pour lesquelles on trouve une mention dans la colonne Code matière non ?

Oui c'est exactement ça.

Mais vu qu'il s'agit d'un inventaire, c'est en fonction des références (qui ont un code matière) qu'on désire afficher dans la feuille "calcul note").

Pour faire simple, mon intérêt pour le useform, c'est de me permettre d'afficher LES lignes et pas TOUTES que je veux bien afficher grâce à une zone de liste modifiable (contenant les références en colonne A de la feuille base de données.)

Dans l'attente de vous lire,

Je serai ravi de détailler davantage,

J'au inséré le useform avec le combobox, vous pouvez jeter un coup d'œil

je ne comprends pas ce que vous voulez faire avec cette Userform. Ou alors vous voulez faire du cas par cas ?
Mais j'imagine que vous avez 100 articles à mettre en calcul notes ....

Comme je vous ai expliqué, s'il s'agit de remettre à jour votre feuille "Calcul notes" sur base des indications de la feuille "Base de données", on a besoin que de 2 codes qui vont remettre votre feuille à jour.
Les formules sont en place dans les colonnes de droite. Donc de coté on ne bouge rien sauf adapter les formules en fonction du nombre de lignes concernées.

Donc en gros deux codes :
- 1 code qui efface les lignes de la feuille calcul notes
- 1 code qui réimporte les lignes en fonction de la colonne code matière mentionnée en feuille Base données

Il vous suffira de cliquer sur le bouton que vous avez installé dans la feuille Calcul notes pour exécuter les opérations

Si ok je vous donne le code

Après si vous voulez conserver l'USF pour afficher les données d'une ligne spécifique, là c'est un autre supplément à réaliser

J'ai bien compris votre raisonnement.

Et je vous laisse le soin de me montrer le code pour qu'on se comprenne davantage.

Je vous joins un exemple de ce que je veux faire.

En fait ma liste des articles est beaucoup plus longue que celle dans le fichier.

Et donc si je ne veux inventorier de 50 par exemple sur 100. Le useform va les afficher & les copier sur les lignes de la feuille "calcul note".

En fait en regardant votre userform et le code je vois que c'est pour compléter la feuille Base de données ?
je n'avais pas compris cela dans votre premier message.

Et donc si je ne veux inventorier de 50 par exemple sur 100. Le useform va les afficher & les copier sur les lignes de la feuille "calcul note".

Si c'est aller copier dans la feuille Calcul notes sur base de l'userform, c'est un peu compliquer les choses par rapport à ce que je vous propose ci-dessous qui est de remettre à jour complètement la feuille calcul notes


Rem :
Dans votre dernier fichier, attention que le tableau de votre feuille Base de données est au format structuré. Dans ce cas les codes changent.
D'où une question, est-ce que votre feuille "Calcul notes" va aussi être mis au même format que la feuille Base de données ?
Si oui, on peut oublier ce que je vous avait préparé ci-dessous. Il faut refaire le code


Voici les codes à placer dans un module de votre premier fichier posté.

1. Effacement dans la feuille Calcul notes

Sub effacer()
Dim dlg As Integer

With Sheets("Calcul notes")
    dlg = .UsedRange.Rows.Count
    If dlg > 3 Then .Range("A4:S" & dlg).EntireRow.Delete
End With
End Sub

2. Importation données

Sub importer()
Dim tablo() As Variant
Dim dlg As Integer, j As Integer, i As Integer, k As Integer

Application.ScreenUpdating = False

Call effacer 'effacer donnee dans feuille calcul note

With Sheets("base de données")
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    ReDim tablo(dlg - 2, 3)
    j = 0
    k = 0
    For i = 0 To dlg - 2
        If .Cells(i + 2, 2) <> vbNullString Then
            For j = 0 To 3
                tablo(k, j) = .Cells(i + 2, j + 1)
            Next j
            k = k + 1
        End If
    Next i
End With

With Sheets("Calcul notes")
    .Cells(3, 1).Resize(UBound(tablo), UBound(tablo, 2) + 1) = tablo 'colle le contenu du tableau '***
    dlg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("E3:S3").AutoFill Destination:=.Range("E3:S" & dlg), Type:=xlFillDefault 'recopie les formules
End With

Application.ScreenUpdating = False
End Sub

Vous devez juste associer le code IMPORTER à votre bouton qui se trouve sur votre feuille "Calcul notes" (ou sur autre feuille)

Faites un test


Merci de ne pas reposter chaque fois un fichier. J'ai le premier sur lequel je fais les tests pour vous donner réponse. Sans quoi je dois chaque fois recommencer et de plus on évite d'alourdir le forum.

EDIT : Attention j'ai corrigé une ligne dans le code (J'ai placé 3 astérisques pour que vous voyiez)

Le hasard fait que constate que vous faites du cross-posting ce qui est interdit sur ce forum.
Merci de bien vouloir relire la charte à ce sujet --> https://forum.excel-pratique.com/excel/a-lire-avant-de-poster-charte-du-forum-et-informations-utiles...

Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).

Qui plus est, c'est un membre habitué de ce forum qui vous répond sur l'autre. Quel respect tout de même !

Je considère votre demande terminée.
Merci de bien vouloir au moins clôturer le sujet

Bonjour,

Je comprends la portée de mes actes.

Je vous présente mes excuses à tous pour le désagrément causé.

J'aurai dû prendre le temps de lire la charte.

Si je dois être banni desdits forums, j'accepte de bon grés.

Moussa

Rechercher des sujets similaires à "useform vba renseigner automatiquement colonnes feui"