Remplir un noveau tableau excel en fonction d'une valeur de cellule

VMarine

XLDnaute Nouveau
Bonjour,

Je débute totalement dans VBA.
Je pars d'un tableau (feuil 1) dans lequel j'ai une colonne "code" et en face une colonne oui / non
en gros quand c'est oui, je souhaite transposer des infos de ce tableau dans un nouveau tableau (feuil 2)
ce second tableau cherche à récupérer en colonne 1, le nom de code des lignes "oui"
pourriez vous m'aider à lancer la macro,
j'imagine que cela peut marcher avec une boucle for parcourant les lignes de mon premier tableau mais après je suis un peu perplexe avec cette nouvelle forme de codage...
j'ai fait des captures d'écrans de mes 2 tableaux, en pièces jointes
Merci d'avance !!

Marine
 

Pièces jointes

  • Tab 1.jpg
    Tab 1.jpg
    54 KB · Affichages: 56
  • Tab 2.jpg
    Tab 2.jpg
    10.9 KB · Affichages: 42

Modeste

XLDnaute Barbatruc
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Bonsoir Marine,

Procédons par ordre, veux-tu?

D'abord, bienvenue à toi, sur ce merveilleux forum (qui hante notre sommeil du doux murmure des conversations qui s'y déroulent) et au paradis du VBA (qui peuple nos nuits de toutes les âneries que nous avons pu écrire enfin ... moi, surtout!)

Ensuite, refais un petit tour dans la Charte que tu as consultée religieusement -à n'en point douter- avant de poster. :)
Que voudrais-tu que nous fissions d'une capture d'écran ... qui ne reflète pas, par ailleurs (je suis fort marri d'avoir à le signaler) les explications que tu donnes.:p

Balance-nous donc un petit bout de fichier (sans données confidentielles) pour qu'on comprenne bien et qu'on puisse tester nos propositions avant de te les soumettre (je t'assure que c'est nettement préférable ;))

Enfin, de ce que j'ai cru comprendre, on pourrait sans doute faire la même chose (à moindres frais!) avec des formules ... tu n'en veux pas??
 

VMarine

XLDnaute Nouveau
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Bonsoir Modeste,

Merci pour ce début de réponse... !
en effet mon affaire etait peu claire expliquée en quelques mots mal dits !
alors j'ai simplifié mon excel pour montrer un peu mieux ce que je veux faire.
J'ai glissé des com' dans les pages pour expliquer.
Feuil "a remplir" le tableau a compléter,
en fonction du tableau feuil "regroupement" ! (en gros je test si des codes sont regroupables (ca me donne oui ou non dans ce tableau) si c'est oui, je tire la longitude,latitude de ces codes dans un tableau à part pour continuer mes opérations ensuite....

et volontier pour une formule "a moindre frais" sans passer par VBA...

Merci d'avance !
Marine
 

Pièces jointes

  • Marine.xlsm
    22.3 KB · Affichages: 45
  • Marine.xlsm
    22.3 KB · Affichages: 59
  • Marine.xlsm
    22.3 KB · Affichages: 66

Modeste

XLDnaute Barbatruc
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Re,

et volontiers pour une formule "a moindre frais" sans passer par VBA...
Ventre-Saint-Gris! :eek: J'ai bien fait de demander un bout de fichier! Ma compréhension de l'illustration du début était sans commune mesure avec l'étendue du problème posé (enfin, ce que j'en ai compris!)

Rien que pour compléter la "Ville 1", j'en suis déjà à cette formule: en A2 de la feuille "A remplir"
Code:
=INDEX(Code!$F$2:$F$8;EQUIV(INDEX('Regroupements possibles'!$B$1:$B$10;PETITE.VALEUR(SI('Regroupements possibles'!$C$4:$C$10="oui";LIGNE('Regroupements possibles'!$B$4:$B$10));LIGNES($1:1)));Code!$B$2:$B$8;0))
Valider avec Ctrl+Shift+Enter et recopier vers le bas.

Peux-tu déjà tester celle-ci pour vérifier que le résultat obtenu est celui que tu attends? Si oui, je ne suis pas certain qu'on puisse, en recopiant vers le bas, faire la même chose avec le contenu de la colonne D de la feuille "regroupements" et d'autres colonnes qui suivraient encore :confused:

Il faudrait que tu précises aussi les volumes qu'il y aurait en situation réelle dans les différentes feuilles. Ça risque d'être "du lourd"!?

Je te lirai demain, en ce qui me concerne ... à moins qu'un oiseau de nuit ne passe par ici avec une proposition sous l'aile!
 

Modeste

XLDnaute Barbatruc
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Bonjour Marine, le fil,

... Raté pour les oiseaux de nuit :p
Je ne sais si la nuit porte conseil, mais voici un essai (par macro).

Attention, dans ton exemple, certains codes repris en feuille "Regroupements" (en vert dans la pièce jointe) sont absents de la feuille "Code" ! J'en ai donc inventé, pour faire les tests, mais dans ton fichier réel, si des codes manquent, la cellule correspondante dans la feuille "A remplir" restera vide.

D'autre part, une série de tes Oui/Non étaient suivis d'une espace ... Ici aussi j'ai corrigé. La question est: risque-t-il d'y avoir la même chose dans ton fichier réel??

Teste d'abord le fichier joint, pour vérifier si j'ai compris et si les résultats sont corrects. Ajoute ensuite quelques colonnes pour t'assurer qu'il n'y a pas de surprises ... et croisons les doigts :eek:
 

Pièces jointes

  • Coordonnées (VMarine).xlsm
    22.8 KB · Affichages: 34

VMarine

XLDnaute Nouveau
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Re-Bonjour,

Merci pour la réponse, en fait j'ai créé une fonction qui pourrait déjà alléger la formule.
LongLat(d'un code) qui renvoie la valeur de la colonne Longitude,Latitude pour la ligne correspondant au code en argument. (allège d'un index)

mon problème cest en effet que le doc va être lourd. on a 900 codes a peu près et l'idée c'est de faire des regroupements de codes jusqu'à tous les caser... donc le tableau regroupement va avoir pas mal de colonnes au fur et a mesure aussi.

C'est pour ca que je pensais qu'il fallait que je passe par vba, pour faire une sorte de boucle si sur toutes les lignes d'une colonne.
ma question si je mets une formule excel c'est qu'est ce qu'il va faire quand il y a écrit non ? Je ne suis pas sure de comprendre le raisonnement de la formule proposée..
je remets en piece jointe un excel avec la fonction longlat qui marche, et un exemple dans le tableau 3 de ce que je voudrais automatiser...

Merci d'avance !

Marine
 

Pièces jointes

  • Marine.xlsm
    25.5 KB · Affichages: 32
  • Marine.xlsm
    25.5 KB · Affichages: 42
  • Marine.xlsm
    25.5 KB · Affichages: 41

VMarine

XLDnaute Nouveau
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Wahou ! tellement stylé !! la macro marche !
merci beaucoup !
j'ai tenté d'ajouter des codes c'est tout bon.
Après le problème des oui non mal écrits ce sera bon, c'est moi qui n'ai pas fait gaffe hier soir mais ce sera automatisé donc pas de risque d'erreurs.
je vais tenter de la mettre dans mon excel d'origine, et voir si ca marche toujours quand j'ajoute des colonnes !
Un immense merci déjà !!
Marine
 

VMarine

XLDnaute Nouveau
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Alors, après quelques modif pour le mettre dans mon fichier initial (j'ai principalement remis les bons noms d'onglets, voir ce dessous)
il m'annonce argument ou appel de procédure incorrect pour la fonction finale transpose. Je ne vois pas ce qui change, alors que ca marchait pour le doc d'avant...
Un dernier p'tit coup de main ? Merciiii !

Sub remplissage()
Dim Liste
Dim Lig
'créer un dico avec le code B comme clé et LongLat comme valeur
Set Liste = CreateObject("scripting.dictionary")
Application.ScreenUpdating = False
With Sheets("IRIS")
For Lig = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
Liste(.Cells(Lig, 2).Value) = .Cells(Lig, 6)
Next Lig
End With

Dim tablo() As String
Dim gp
Dim derLig
Set gp = Sheets("sup-inf Dmax")
derLig = gp.Cells(Rows.Count, 2).End(xlUp).Row
'Pour chaque colonne de "sup-inf Dmax"
Dim col
Dim Ligne
For col = 3 To gp.Cells(3, Columns.Count).End(xlToLeft).Column
'Pour chaque cellule dans la colonne
For Ligne = 4 To derLig
If UCase(gp.Cells(Ligne, col)) = "OUI" Then
ReDim Preserve tablo(1, x)
tablo(0, x) = Liste(gp.Cells(Ligne, 2).Value)
tablo(1, x) = Liste(gp.Cells(3, col).Value)
x = x + 1
End If
Next Ligne
Next col


'mettre à blanc et compléter la feuille "Tps Trajet"
With Sheets("Tps Trajet")
.Cells(2, 1).Resize(.UsedRange.Count, 2).ClearContents
.Cells(2, 1).Resize(x, 2) = Application.Transpose(tablo)
End With

Application.ScreenUpdating = True
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

Re²,

L'erreur ne vient sans doute pas des noms de feuilles que tu as modifiés.
Le plus vraisemblable (à mon avis) est que la variable "tablo" ne soit pas garnie comme il le faudrait!? Place un point d'arrêt sur cette ligne dans le code et regarde dans la fenêtre des variables locales.
Si c'est bien là qu'est le souci, il nous restera à trouver où il faudra corriger :confused:
 

VMarine

XLDnaute Nouveau
Re : Remplir un noveau tableau excel en fonction d'une valeur de cellule

En fait ca marche !!

l'erreur venait de moi, certaines cellules étaient vide donc il n'arrivait pas a parcourir toutes les lignes je crois...
donc tout est bon, la marco marche sur mon excel complet !

Encore un grand merci !!!!
Marine
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa