Alimenter des colonnes

Bonjour,

J'espère que vous allez bien.

I need you, j'ai besoin d'alimenter mon onglet "A alimenter" en fonction de ma base de données

Formation = Stage
Début = début période
Fin = Fin de période

La mise en forme ne peut pas être modifiée car il s'agit d'un fichier que je dois intégrer dans un outil.

La clé de recherche est le numéro de matricule.

Certains matricules peuvent posséder x formations tandis que d'autres peuvent en posséder un.

Il n'y a pas d'ordre chronologique.

To do -> lister les formations par matricule sous forme de colonne et non de lignes...

Merci beaucoup pour votre aide, je ne sais pas du tout comment faire

Voici ce que j'ai réussi à constituer... si ça peut aider

Maintenant, je ne sais pas comment alimenter l'onglet "A alimenter" avec les informations que j'ai pu regrouper... sous forme de colonne

Help :) et merci

Bonjour Nextia, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim OA As Worksheet 'déclare la variable OA (Onglet A)
Dim OB As Worksheet 'déclare la variable OB (Onglet B)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim PCV As Integer 'déclare la variable PCV (Première Colonne Vide)

Set OA = Worksheets("A alimenter") 'définit l'onglet OA
Set OB = Worksheets("Base de données") 'définit l'onglet OB
DL = OB.Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne B de l'onglet OB
For I = 2 To DL 'boucle 1 : sur toutes les lignes I de 2 à DL
    If OB.Cells(I, "A") <> "" Then 'condition : si la cellule ligne I colonne A de l'onglet OB n'est pas vide
        Set R = OA.Columns(1).Find(OB.Cells(I, "A").Value, , xlValues, xlWhole) 'de'finit la recherche R (recherche la valeur entière dans la colonne 1 de l'onglet OA)
        If Not R Is Nothing Then 'condition 2 : s'il existe au moins une occurrence trouvée
            LI = R.Row 'définit la ligne LI de la première occurrence trouvée
        Else 'sinon (aucune occurrence trouvée)
            GoTo suite 'va à l'étiquette "suite"
        End If 'fin de la condition 2
        For J = 1 To 4 'boucle 2 : sur 4 colonnes
            PCV = OA.Cells(LI, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne LI de l'onglet OA
            OA.Cells(LI, PCV).Value = OB.Cells(I, J + 1).Value 'récupère la valeur de la cellule ligne I, colonne J+1 de l'onglet OB
        Next J 'prochaine colonne de la boucle 2
    Else 'sinon (condition 1)
        For J = 1 To 4 'boucle sur 4 colonnes
            PCV = OA.Cells(LI, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne LI de l'onglet OA
            OA.Cells(LI, PCV).Value = OB.Cells(I, J + 1).Value 'récupère la valeur de la cellule ligne I, colonne J+1 de l'onglet OB
        Next J 'prochaine colonne de la boucle
    End If 'fin de la condition 1
suite: 'étiquette
Next I 'prochaine ligne de la boucle 1
End Sub

Merci, je vais tenter de lancer la macro ahah en espérant ne pas me tromper ;)

Je te dis le résultat sauf si tu as déjà le fichier d'enregistrer

Je me suis aperçu que je me suis trompé sur la numérotation date fin etc...faut que je corrige ça... la Macro s'adaptera? (je suis novice)

J'ai remarqué que le résultat escompté n'est pas totalement bon, par exemple le matricule 71 n'a que 9 formations pourtant que l'onglet "A alimenter", le résultat en donne + de 15... what happened?

De même, j'ai des dates sur les colonnes "stage " par exemple le matricule 25

J'ai également des doublons sur plusieurs matricules, ce qui fait qu'on explose le nombre de colonnes prévues à cet effet ^^"

Mais tu y es presque ! :)

Re,

J'ai repris ton fichier vierge, collé mon code et il y a bien 9 stages pour le 71... Watt à peine ?!...

ah cette fois-ci ça a été corrigé, tu gères trop

J'essaie de voir le reste, s'il te plaît ne t’éclipse pas ahah :)

Re,

J'suis plus là dans 23 minutes...

Par exemple le matricule 86, il y a un décalage, regarde le résultat de la colonne AI et AJ.

Re,

Dans l'onglet Base de donnée il manque l'intitulé de la formation pour le 6ème stage du 86. C'est normal que ça décale !...
Commence par vérifier cet onglet avant de lancer la macro... Ou alors il faut tout repenser mais là je n'aurais plus le temps...

Au moment où tu as écris...j'avais trouvé la réponse...

Oui effectivement, j'ai deux lignes pour lesquelles je n'ai pas de formations d'indiquer, je vais les traiter manuellement, mais sinon tout le reste fonctionne§!!!

TU GERES 10/10

Re,

Je reste attentif à ce fil si tu as d'autres problème...

ce qui m'énerve lol c'est que lorsque je lance la macro tout se décale... ralala

Voilà j'ai rempli les champs "vides", peux tu la relancer de ton côté stp, quand j'essaie ça se décale...

si tu arrives à m'expliquer pourquoi quand je lance la macro tout se décale... je fais probablement mal la manip "je le selectionne lancer la macro dans ce classeur" mais je t'avoue j'ai de nombreux fichiers excel d'ouverts...

c'est bon j'ai corrigé à la mano les cellules manquantes ;) encoreeeee merci beaucoup !!!

Ahah je viens de me rendre compte qu'il me manque beaucoup de matricules sur ma base de données... -.-"

Si je mets à jour l'onglet base de données en gardant les mêmes colonnes etc , la macro sera t'elle capable de rajouter les lignes (matricules) manquantes?

Je tente

merci

Voilà le fichier à jour avec également la base de données corrigées...peux tu stp me renvoyer avec la macro, car malheuresement pour une raison que j'ignore, cela se décale chez moi.

Enfin, voici un dernier état à faire, je t'en remercie mille fois, c'est le même principe mais avec une seule donnée à inserer dans chaque colonne, à savoir "la formation"

Un matricule peut avoir plusieurs formations

Ps : stp n'oublie pas mon message précédent.

Encore merciiiiiiiiiiii

Rechercher des sujets similaires à "alimenter colonnes"