code VBA de recherche et d'édition

  • Initiateur de la discussion Initiateur de la discussion jc de lorient
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jc de lorient

Guest
Bonjour le forum,

Malgré mes recherches sur les anciens post je reste tjrs sans solutions

Je cherche un début de code VBA (ou mieux le code complet !!) lié a un commandbutton qui me ferait ceci :

En M9 (feuille Edition) j’ai une date en format jj/mm/aaaa

Je souhaiterais qu’excell aille me chercher certaines valeurs (numériques et alphanum) dans une autre feuille (données) sur les lignes ou le mois et l’année de M9 sont en correspondances en colonne A

Et ensuite qu’il me liste ces valeurs sur ma feuille Edition a partir de la cellule B8

En espérant avoir été suffisamment clair !

Merci de votre aide
 
Bonjour de lorient

Un petit code qui doit pouvopir t'aider.

A affecter à un bouton si tu le désires

Sub deb()
Set maplage = Sheets("données").UsedRange.Rows
madate = Sheets("édition").Range("m9")
n = 0
For Each i In maplage
If i.Columns(1) = madate Then
a = i.Columns(1).Offset(0, 1)
Sheets("édition").Range("b8").Offset(n, 0) = a
n = n + 1
End If
Next
End Sub
 
Bonjour Sousou, le forum

je n'ai pas encore appliquer ton code suis en déchiffrage !! lol

concernant ma date je pense que ton code va comparer la date sous forme jj/mm/aaaa or je souhaite simplement un comparatif mm/aaaa

ça doit etre juste une question de format mais même là suis pas assez calé

merci de l'aide que tu m'as apporté et celle a venir !!

JC
 
re tout le monde

c un bon début mais je n'obtiens pas exactement ce que je voulais

ex : si la date correspond prendre la valeur de la colonne A,B,C,D,E,H,K,M de ma feuille données et les recopier sur ma feuille édition dans le même ordre !

merci de votre aide précieuse

JC
 
RE

Attention avec les dates.
Une date reste une date même si son format est différent.
exemple 1/1/2005 au format mm/aaaa sera représenté par 01/2005
Il n'empèche que la date réelle rest le 1/1/2005 et que c'est cela qui sera comparé.
Alors il faut bien savoir si le contenu de tes colonnes sont des dates ou du texte,.
Si tu veux connaître des dates dans un mois, il faut travailler sur les fonctions mois(date) et année(date) disponible dans excel ou dans vb pour savoir si ta date est dedans.
 
Il suffit simplement de faire evoluer l'offset de colonne soit dans une boucle soit comme ci-dessous.


Sheets("édition").Range("b8").Offset(n, 0) = i.Columns(1).Offset(0, 1)
Sheets("édition").Range("b8").Offset(n, 1) = i.Columns(1).Offset(0, 2)
Sheets("édition").Range("b8").Offset(n, 2) = i.Columns(1).Offset(0, 3)
ect....
 
Re Sousou

voilà le code que j'ai tapé :

Sub deb()
Set maplage = Sheets("Récap").UsedRange.Rows
madate = Sheets("Edition").Range("H5")
n = 0
For Each i In maplage
If i.Columns(1) = madate Then
a = i.Columns(1).Offset(0, 1)

Sheets("Edition").Range("b8").Offset(n, 0) = i.Columns(1).Offset(0, 1)
Sheets("Edition").Range("b8").Offset(n, 1) = i.Columns(1).Offset(0, 2)
Sheets("Edition").Range("b8").Offset(n, 2) = i.Columns(1).Offset(0, 3)
Sheets("Edition").Range("b8").Offset(n, 3) = i.Columns(1).Offset(0, 4)
Sheets("Edition").Range("b8").Offset(n, 4) = i.Columns(1).Offset(0, 5)
Sheets("Edition").Range("b8").Offset(n, 5) = i.Columns(1).Offset(0, 6)
Sheets("Edition").Range("b8").Offset(n, 6) = i.Columns(1).Offset(0, 7)
Sheets("Edition").Range("b8").Offset(n, 7) = i.Columns(1).Offset(0, 8)
Sheets("Edition").Range("b8").Offset(n, 8) = i.Columns(1).Offset(0, 9)
Sheets("Edition").Range("b8").Offset(n, 9) = i.Columns(1).Offset(0, 10)
Sheets("Edition").Range("b8").Offset(n, 10) = i.Columns(1).Offset(0, 11)
Sheets("Edition").Range("b8").Offset(n, 11) = i.Columns(1).Offset(0, 12)
Sheets("Edition").Range("b8").Offset(n, 12) = i.Columns(1).Offset(0, 13)

n = n + 1
End If
Next
End Sub

ça ne marque qu'à moitié je t'explique :

si la colonne A de ma feuille Récap est 0 je souhaite récupérer les valeurs des colonnes 2/3/4/5/7/9/10/13

et que ça puisse se ranger sur ma feuille 2dition

en B9 C9 D9 E9 F9 G9 H9 I9
ensuite de passer aux valeurs suivantes s'il y en a

navré j'en demande peut etre bcp mais je n'arrive pas a me familiariser avec VBA

mille merci

JC
 
Re

Mille exuses ça marche très bien

mon erreur : j'ai inséré une colonne et je n'ai pas rectifié mon code

reste juste a régler le problème de date

suis preneur de toutes vos idées

dix mille merci

JC
 
re le forum

voiçi mon code terminé

Sub deb()
Set maplage = Sheets("Récap").UsedRange.Rows
madate = Sheets("Edition").Range("I5")
n = 0
For Each i In maplage
If i.Columns(1) = madate Then
a = i.Columns(2).Offset(0, 1)

Sheets("Edition").Range("b8").Offset(n, 0) = i.Columns(1).Offset(0, 1)
Sheets("Edition").Range("b8").Offset(n, 1) = i.Columns(1).Offset(0, 2)
Sheets("Edition").Range("b8").Offset(n, 2) = i.Columns(1).Offset(0, 3)
Sheets("Edition").Range("b8").Offset(n, 3) = i.Columns(1).Offset(0, 4)
Sheets("Edition").Range("b8").Offset(n, 4) = i.Columns(1).Offset(0, 5)
Sheets("Edition").Range("b8").Offset(n, 5) = i.Columns(1).Offset(0, 7)
Sheets("Edition").Range("b8").Offset(n, 6) = i.Columns(1).Offset(0, 9)
Sheets("Edition").Range("b8").Offset(n, 7) = i.Columns(1).Offset(0, 10)
Sheets("Edition").Range("b8").Offset(n, 8) = i.Columns(1).Offset(0, 13)

n = n + 1
End If
Next
End Sub

2 questions :

1 n'y a t il pas possibilités de " l'accélerer" ? en effet je le trouve un peu lent !!

2 Mon Range "I5" vaut 01/mm/aaaa y aurait il possibilité d'obtenir a partir de cette valeur la totalité du mois concerné

Merci merci merci !

JC
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour