Recherche + boucle + valeurs décallées
Bonjour à tous,
Je suis à la recherche désespérée d’une aide pour un fichier sur lequel je travaille.
Pardonnez moi à l’avance si ce n’est pas clair mais ce n’est pas évident à expliquer. Je joins un fichier représentatif de ce que je cherche à faire, en l'ouvrant et en me lisant ce sera plus simple de comprendre.
Voila, j’aimerais récupérer dans la feuille "Tableau de Présentation" des valeurs d’une feuille nommée "Tableau" en fonction d’un numéro de série du client et de l'entête de la colonne.
Dans "Tableau de Présentation" j’aimerais que chaque valeurs aient le même espacement c’est çà dire 11 lignes afin qu’elles entrent dans le format prédéfini (les valeurs iraient là où les XXX rouges sont).
Enfin pour rendre la chose encore plus simple, j’aimerais qu’avec un système de liste dans les entêtes on puisse récupérer des valeurs différentes du tableau de la feuille "Tableau".
Voila le code que j'ai établi, du moins pour la colonne E. le bug vient de la recherche v qui affiche bien la valeur pour le premier cadre mais qui ne boucle pas sur le second ni sur le troisième.
Merci d'avance pour ceux ou celles qui pourront m'aider
Sub TableauColE()
Dim NumCol As String
Dim i As Integer
Dim j As Integer
Dim L As Integer
Dim N As String
N = Range("E4").Text
c = Sheets("Tableau").Range("B3:T4").Find(N, lookat:=xlWhole).Column
NumCol = c
For j = 5 To 100
For i = 6 To 100
If Not IsEmpty(Sheets("Tableau de Présentation").Cells(i, 2)) Then
Sheets("Tableau de Présentation").Cells(j, 5) = WorksheetFunction.VLookup(Sheets("Tableau de Présentation").Cells(i, "B").Value, Sheets("Tableau").Range("B:V"), NumCol - 1, False)
End If
i = i + 11
j = j + 11
Next
Next
End Sub
Peut-être qu'avec une programmation de type "FIND" cela fonctionnerait, mais étant débutant en VBA je ne saurais pas l'utiliser.
Bonjour, j'ai rien compris mais votre demande n'a pas l'air d'être bien trop compliqué à mettre en oeuvre, en formule tout comme en vba. C'est possible d'avoir un exemple plus concret ? J'entends par ""plus concret" une représentation plus fidèle de la réalité parce que là avec deux trois valeurs qui se cours après et des "xxx" nous perdons tous notre temps à réfléchir pour trois fois rien...
Bonjour CPK, Merci de prendre le temps de répondre à mon problème.
Je réessaye d'expliquer mon problème, avec le même fichier car c'est l'exemple le plus concret que je puisse faire.
Donc il y a deux onglet, "Tableau" et "Tableau de Présentation".
Dans "Tableau" j'ai en colonne "B" le code unique de la personne. En "C" le nom de la personne et en "D:V" les valeurs différentes correspondant à des infos de ces mêmes personnes.
Dans "Tableau de Présentation" j'aimerais mettre en forme pour chaque personne un rectangle d'information. Ce dernier est sur plusieurs colonnes comme tu peux le voir dans le fichier que j'ai déposé.
En "B:D" se trouve le header "AA" et les valeurs "nom" et "code" se disposent automatiquement l'un en dessous de l'autre avec une macro que j'ai mis en place, et ce toutes les 11 lignes (correspondant à la hauteur du rectangle).
Là où j'aimerais créer ma macro c'est pour la colonne "E", "F" et "G". Les headers sont modifiables de part une liste déroulante correspondant aux headers de la feuille "Tableau". Et ma recherche doit se baser sur le "Code" + le header variable afin de ressortir la valeur correspondante.
Je pourrais effectivement le faire avec une simple recherchev et cela pour les 3 rectangles en placant les formules dans les cellules "XXX", sauf qu'en réalité dans mon fichier j'ai plus de 1000 noms et donc plus de 1000 codes.
J'aimerais donc faire une macro, qui arriverait à faire cette recherche en fonction du "Code" et du "Header selectionné" pour mettre la valeur en dessous (là où les XXX sont placés) et que cette recherche se fasse toutes les 11 lignes afin que ce soit disposé de la même manière.
J'espère que mon explication est plus claire, je suis vraiment désolé, ce n'est pas évident à expliquer. Mais en regardant le fichier et en me lisant cela devrait aider.
Dans le premier Cadre du nouveau fichier que je vais joindre, j'ai mis le résultat que j'aimerais atteindre.
Merci par avance.
En fait mon probleme était lié au "i = i + 11" qui aurait du être "i = i + 10"
Maintenant cela fonctionne.