Remplir des colonnes en fonction d'une valeur déterminée
Bonjour à toutes et à tous,
Bloqué depuis un moment sur une macro (je ne suis pas un expert) je fais appelle au forum.
Dans le tableau que je joins, j'aimerai que les colonnes B; D; K et M de l'onglet "OM_2015" se remplissent au fur et à mesure uniquement si la colonne E (article) de l'onglet Data_collect_OM soit égale à W1.
Je ne fais pas de "RECHERCHEV" car je souhaite que les lignes se remplissent sans faire de saut d'une ligne à l'autre...
Selon moi, seul une macro permet de faire cela...
Je vous remercie en avant pour votre aide, que je sais toujours très professionnel.
F. Fortin
PS: Je n'arrive pas à joindre le fichier. Je clique sur parcourir je le sélectionne et quand je clique sur Ajouter le fichier il s'efface... Que dois-je faire?
Taille du fichier: 1.05 Mo (1'107'849 octets)
Salut,
Pour joindre un fichier trop volumineux, tu peux en faire une copie et y supprimer toutes les feuilles qui ne sont pas utiles à ta demande, si des feuilles à nous fournir comptent 100'000 lignes, dis-toi bien que 100 lignes suffisent probablement à ta demande. Si tu as plein d’images, de formes, de mises en forme, de bordures etc. et que tout ceci n’est pas utile à ta démo, supprime-les.
Tu peux ensuite comprimer ton fichier (dans l’explorateur clic droit sur le nom du fichier / Envoyer vers / Dossier compressé) et si ça ne passe toujours pas par les moyens du Forum, passe par le site C-Joint http://www.cjoint.com/
Cordialement.
Bonjour Yvouille,
Merci pour ta réponse, mais même réduit à 338 Ko (346'349 octets) il ne passe pas... Je ne comprends pas...
Le problème doit venir d'ailleurs.
Je ne sais pas comment faire, le problème n'est pas lié à la taille apparemment
Avec mes meilleurs messages
Re,
Si j'avais su que t'étais Genevois ...... Mais non, je plaisante
Une fois compressé ton fichier ne fait que 112 Ko ; je le place donc de cette manière sur ton fil. De plus, ton fichier aurait passé sans problème - même non compressé - sur le site C-Joint que je t'avais conseillé.
Je ne peux pas m'en occuper immédiatement donc si éventuellement quelqu'un passe par là, qu'il vienne en aide à FBF.
Sinon je regarde ça demain dans la journée.
Bonne soirée.
Re,
Je ne suis pas certain d’avoir bien compris ta demande ; par exemple je n’ai pas compris si tu voudrais que de nouvelles données que tu aurais ajoutées manuellement sur la feuille ‘Data_collect_OM’ soient ajoutées aux données en place sur la feuille ‘OM_2015’ ou si on peut à chaque fois reprendre toutes les données de la feuille ‘Data_collect_OM’ sur la feuille ‘OM_2015’.
Dans le fichier ci-joint, c’est cette deuxième possibilité que j’ai considérée. A chaque fois que tu sélectionnes la feuille ‘OM_2015’, toutes les données en place dans les colonnes B à G et J à M de cette feuille sont effacées et remplacées par les données de la feuille ‘Data_collect_OM’ qui comportent la mention ‘W1’ dans la colonne E. Donc si tu modifies quoi que ce soit sur ta feuille ‘Data_collect_OM’, les modifications seront visibles sur la feuille ‘OM_2015’ lors de sa prochaine sélection.
Les reports suivants sont effectués pour l’instant : Les colonnes G, F, H et I de la feuille ‘Data_collect_OM’ sont reportées respectivement dans les colonnes B, D, K et M de la feuille ‘OM_2015’.
Comme aucune donnée n’est reportée dans la colonne F de la feuille ‘OM_2015’, les formules qui restent en place dans les colonnes H et I de la feuille ‘OM_2015’ ne renvoient aucune valeur pour l’instant.
Si ce n’est pas ce que tu désires, essaie d’être plus clair dans tes explications.
Encore une question par simple curiosité : j’ai vraiment l’impression de reconnaitre la macro que tu avais dans ton fichier de présentation. Sais-tu où tu l’avais trouvée ? Elle pourrait venir d’un de mes fichiers, mais ces macros circulent tellement sur le net qu’on en retrouve plus toujours la trace.
NB : Je t'avais donné plusieurs conseils afin d'alléger ton fichier. J’ai maintenant enlevé les mises en forme de la colonne A de la feuille ‘OM_2015’ de la ligne 100 à la ligne 1'048'576 et j’ai supprimé des bordures et les formules des lignes 101 à 6000. Ton fichier ne fait plus que 70 Ko
Amicalement.
Bonjour Yvouille,
Bon, je dois répondre à pas mal de question... Alors oui je suis Genevois
Ensuite, comme tu l'as constaté par toi-même, c'est bien ta macro que j'ai trouvée sur ce forum, qui est excellent cela dit en passant, et ce grâce à des personnes comme toi
Je cherchais à adapter ta macro à mon problème ayant trouvé des similitudes avec une autre demande. Nous sans peine effectivement. Mais comme je le répète souvent s'est en faisant que l'on devient faiseur...
Et surtout MERCI pour ta macro, cf. dernier post, je crois qu'elle répond parfaitement à mon besoin. Chapeau bas!
Une dernière requête, si je peux conserver les lignes dans OM_2015 et n'ajouter que les nouvelles lignes ajoutée dans Data_collect_OM ce serait le nirvana
Pour information, j'ai des données que nous allons remplir mois par mois, par exemple en février nous allons incorporer les données de février (janvier sera déjà enregistré).
En te remerciant encore pour tout et avec mes plus cordiales salutations
Re,
Je rencontre un problème auquel je ne m'attendais pas...
Pour OM_2015, les données des colonnes C; E; F; G; H; I; J; L s'efface à chaque ouverture. Normalement cela ne devrait pas être le cas, seul les données B; D; K; M devraient se remplir les autres devraient rester tels quel.
Je pense que le problème vient de: Range("B3:G" & Rows.Count & " , J3:M" & Rows.Count).ClearContents. Non
J'ai modifié ainsi mais le temps de réponse est assez long:
Private Sub Worksheet_Activate()
Dim i As Integer, k As Integer, DerLig As Integer
Application.ScreenUpdating = False
'Range("B3:G" & Rows.Count & " , J3:M" & Rows.Count).ClearContents
Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).ClearContents
k = 2
With Sheets("Data_collect_OM")
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
If .Cells(i, 5) = "W3" Then
k = k + 1
Range("B" & k) = .Range("G" & i) ' Immatriculation
Range("D" & k) = .Range("F" & i) ' Date
Range("K" & k) = .Range("H" & i) ' Poids
Range("M" & k) = .Range("I" & i) ' Prix
End If
Next i
End With
End Sub
Y a t'il un moyen d'améliorer cela?
Merci pour ton aide
J'ai trouvé,
Je mets la ligne à disposition au cas où
Range("B3:B" & Rows.Count & " , D3:D" & Rows.Count & " , K3:K" & Rows.Count & " , M3:M" & Rows.Count).ClearContents
Merci pour tout et bonne journée.
Bonnes salutations du Valais