Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire une partie de fichier

14 réponses
Avatar
sdellaux
ci-joint un exemple de mon dossier :

http://cjoint.com/?fotiSOcJZx

feuille 1 : dans la cellule B1 j'inscrit une date - par exemple 1856
je souhaiterai que toutes les lignes de la feuille 2 se rapportant =E0
cette date
soient recopi=E9es au d=E9part de la cellule B2

Feuille 2 : c'est la base de donn=E9es des tarifs postaux en sachant que
pour l'instant la plage r=E9elle est B2:F393

merci par avance de votre aide
st=E9phane dellaux

10 réponses

1 2
Avatar
cousinhub
Bonsoir, regarde le fichier joint, et reviens si tu as un souci.
http://cjoint.com/?fotLZRXF26


Bonne lecture

Sub Macro1()
With Range("B3:F" & [b65000].End(xlUp).Row)
.ClearContents
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
If [a2] <> "" Then
Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse
Range("B2").Select
End If
End Sub


ci-joint un exemple de mon dossier :

http://cjoint.com/?fotiSOcJZx

feuille 1 : dans la cellule B1 j'inscrit une date - par exemple 1856
je souhaiterai que toutes les lignes de la feuille 2 se rapportant à
cette date
soient recopiées au départ de la cellule B2

Feuille 2 : c'est la base de données des tarifs postaux en sachant que
pour l'instant la plage réelle est B2:F393

merci par avance de votre aide
stéphane dellaux



Avatar
sdellaux
merci de la reponse si rapide, effectivement dans le fichier joint
tout marche a merveille, j'ai meme recopié l'ensemble du fichier et je
peux rechercher la date que je désire ;
MAIS PROBLEME !!!! et oui avec moi tjrs probleme
j'ai recopié la macro ci-dessous dans la feuille de mon vrai
classeur...
et rien ne se passe....snifffff
je pense aussi que cela vient du bouton créer dans le fichier exemple
qui est certainement associé à la macro
mais alors là je suis nul comment dois-je procéder ?? j'ai essayé le
traditionnel copié-collé mais cela doit etre trop simple (rire)
désolé j'ai besoin d'une aide supplémentaire
merci encore de ta patience par avance
cordialement
stéphane dellaux

On 14 mai, 19:38, cousinhub wrote:
Bonsoir, regarde le fichier joint, et reviens si tu as un souci.

http://cjoint.com/?fotLZRXF26


Bonne lecture

Sub Macro1()
With Range("B3:F" & [b65000].End(xlUp).Row)
.ClearContents
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
If [a2] <> "" Then
Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse
Range("B2").Select
End If
End Sub



Avatar
sdellaux
en complément j'ai fait copie de la macro une fois installée :

une fois installée cette partie ci-dessous apparait en rouge :

Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse

où dois je chercher l'erreur ?

merci encore
stéphaen
Avatar
cousinhub
Re-,
Tout d'abord, tu as dû remarquer que la méthode utilisée consistait à
utiliser le filtre élaboré.
Cependant, le filtre élaboré a une limite (entre autres), c'est qu'il ne
peut extraire QUE vers la feuille active. Le principe, donc, est de
lancer ce filtre à partir de la feuille de destination. Pour ce faire,
on lance le filtre à partir de cette fameuse feuille, on lui dit de
copier vers un autre emplacement, en l'occurrence pas loin d'ici, et on
renseigne la plage à filtrer par la zone incluse dans l'autre feuille
(celle des données).
Pour renseigner correctement cette zone, j'ai utilisé une zone nommée
dynamique (ce n'est pas son nom, c'est qu'elle est dynamique, tout ajout
dans la base sera automatiquement pris en compte).
Si tu ne connais pas cette fonctionnalité, (Insertion/Nom/Définir),
reviens, on pourra te l'expliquer.
Ensuite, la plage de critères (tu as remarqué que j'ai déplacé ta
cellule de critères).
Ensuite, la plage de destination.
Ah, et j'allais oublier, Excel n'aime pas trop les cellules fusionnées
dans tous ses calculs, donc, dans ta feuille 2, j'ai défusionné (je sais
pas si le verbe existe, mais il me paraît assez clair),D1 et E1 pour en
faire 2 cellules bien distinctes.
Peut-être la source de l'erreur.....
PS, après réflexion, le code peut être raccourci comme suit :
(les 4 premières lignes du code effacent les formats précédents, le test
If évite de recopier toute ta base de donnée si la cellule est vide)

Sub Macro1()
With Range("B3:F" & [b65000].End(xlUp).Row)
.Borders.LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
If [a2] <> "" Then
Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse
Range("B2").Select
End If
End Sub

Bon courage

merci de la reponse si rapide, effectivement dans le fichier joint
tout marche a merveille, j'ai meme recopié l'ensemble du fichier et je
peux rechercher la date que je désire ;
MAIS PROBLEME !!!! et oui avec moi tjrs probleme
j'ai recopié la macro ci-dessous dans la feuille de mon vrai
classeur...
et rien ne se passe....snifffff
je pense aussi que cela vient du bouton créer dans le fichier exemple
qui est certainement associé à la macro
mais alors là je suis nul comment dois-je procéder ?? j'ai essayé le
traditionnel copié-collé mais cela doit etre trop simple (rire)
désolé j'ai besoin d'une aide supplémentaire
merci encore de ta patience par avance
cordialement
stéphane dellaux

On 14 mai, 19:38, cousinhub wrote:
Bonsoir, regarde le fichier joint, et reviens si tu as un souci.

http://cjoint.com/?fotLZRXF26
Bonne lecture


Sub Macro1()
With Range("B3:F" & [b65000].End(xlUp).Row)
.ClearContents
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
If [a2] <> "" Then
Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse
Range("B2").Select
End If
End Sub






Avatar
sdellaux
effectivement comme pour l'avoir dit tout fonctionne a merveille dans
l'exemple.
mais je n'arrive pas a le faire fonctionner dans mon classeur réel.
Pourriez vous me donner l'ensemble de la procédure que je dois
appliquer étape par étape ?
notemment cet installation de filtre
comment creer ce bouton qui déclanche la recherche et la copie de la
plage année recherchée.
comment lui affecter la macro etc..etc..
désolé de mon ignorance
merci d'avance
stéphane
Avatar
cousinhub
Bonjour,
Tout d'abord, comme dit dans mon post précédent, il faut défusionné les
cellules D1 et E1 de la feuille 2.
Ensuite, dans la feuille 1, en A1 tu écris exactement ce qu'il y a dans
la cellule B1 de la feuille 2 (en l'occurrence : Année)
Tu inscriras ton année désirée dans la cellule A2 (Feuille 1)
Pour le code, tu fais Alt + F11, l'éditeur VBA s'ouvre.
A gauche de la fenêtre, tu vois ton projet
(VBAProject(nom_de_ton_classeur)).Tu développes si cela n'est pas fait
(le petit plus à gauche). Tu cliques droit sur le This Workbook (par
exemple) et tu insères un module. Dans cette nouvelle page blanche, tu
colles le code ci-dessous :

Sub extract_annee()
With Range("B3:F" & [b65000].End(xlUp).Row)
.Borders.LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
If [a2] <> "" Then
Range("base").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range("B2:F2"), Unique:úlse
Range("B2").Select
End If
End Sub

Si une ligne apparaît en rouge, c'est parce que mon logiciel de
messagerie aura fait un retour à la ligne malencontreux.
Positionne toi en tout début de la ligne incriminée et efface (touche
backspace)
Pour le bouton, tu insères un dessin quelconque dans la feuille 1, clic
droit, affecter une macro et tu lui affectes la macro extract_annee.
Pour le filtre élaboré, regarde sa fonction dans l'aide ou sur les
différents sites suivants :

http://www.excelabo.net/
http://xlwiki.free.fr/wiki
http://boisgontierj.free.fr/
http://frederic.sigonneau.free.fr/



Bon courage

effectivement comme pour l'avoir dit tout fonctionne a merveille dans
l'exemple.
mais je n'arrive pas a le faire fonctionner dans mon classeur réel.
Pourriez vous me donner l'ensemble de la procédure que je dois
appliquer étape par étape ?
notemment cet installation de filtre
comment creer ce bouton qui déclanche la recherche et la copie de la
plage année recherchée.
comment lui affecter la macro etc..etc..
désolé de mon ignorance
merci d'avance
stéphane




Avatar
sdellaux
Tout d'abord, comme dit dans mon post précédent, il faut défusionn é les
cellules D1 et E1 de la feuille 2.
Ensuite, dans la feuille 1, en A1 tu écris exactement ce qu'il y a dans
la cellule B1 de la feuille 2 (en l'occurrence : Année)
Tu inscriras ton année désirée dans la cellule A2 (Feuille 1)


Tous les points ci-dessus c'est ok j'avais d'ailleurs déjà supprimer
le fusionnement, et j'ai repris point par point donc pour cela OK

Pour le code, tu fais Alt + F11, l'éditeur VBA s'ouvre.


Alors là grand probleme j'ai beau taper et retaper alt+f11 rien ne se
produit ? ?????????
j'ai vraiment pas de pot moi.....RIRES....... je dois etre maffré
un autre moyen de faire cette opération ?????

Pour la suite nous verrons après....
tu sais je suis désolé d'etre aussi nul
mais encore merci de l'aide
stéphane

PS : et si je vous envoyais par mail mon classeur original peut etre
pourriez vous directement faire les copier coller ????

Avatar
cousinhub
Re-, envoyer le fichier en BAL (Boîte A Lettres) perso, c'est une
solution, le faire soi-même c'est mieux, non?;-)
Alt + F11, c'est un raccourci clavier (appui sur la touche Alt et en
même temps sur la touche de fonction F11).
Autre moyen, clic droit sur l'onglet de ta feuille : Visualiser le code
Et tu continues...
Courage, on va y arriver :-)


Tout d'abord, comme dit dans mon post précédent, il faut défusionné les
cellules D1 et E1 de la feuille 2.
Ensuite, dans la feuille 1, en A1 tu écris exactement ce qu'il y a dans
la cellule B1 de la feuille 2 (en l'occurrence : Année)
Tu inscriras ton année désirée dans la cellule A2 (Feuille 1)


Tous les points ci-dessus c'est ok j'avais d'ailleurs déjà supprimer
le fusionnement, et j'ai repris point par point donc pour cela OK

Pour le code, tu fais Alt + F11, l'éditeur VBA s'ouvre.


Alors là grand probleme j'ai beau taper et retaper alt+f11 rien ne se
produit ? ?????????
j'ai vraiment pas de pot moi.....RIRES....... je dois etre maffré
un autre moyen de faire cette opération ?????

Pour la suite nous verrons après....
tu sais je suis désolé d'etre aussi nul
mais encore merci de l'aide
stéphane

PS : et si je vous envoyais par mail mon classeur original peut etre
pourriez vous directement faire les copier coller ????




Avatar
sdellaux
Rebonjour,
alors c'est ok j'ai bien défusionné cellules dans la base de données
des dates
dans l'autre feuille j'ai recopié in-extenso toute les cellules de
l'exemple et positionnées au meme endroit.
j'ai bien copier dans le VBA la macro, pour la partie surlignée en
rouge j'avais trouvé par moi-même (deviendrai-je un pro
d'excel ?.......rires) en enlevant les espaces ....il m'arrive d'avoir
des intuitions !!!!! re rires.
bon maintenant par contre je coince avec le bouton
je sais le créer il est positionner et il est inscrit "command but"
mais comme je pense qu'il manque une macro affectée a ce bouton
evidemment rien ne se passe si j'inscrit une date quelconque et je
clique sur le bouton...
que faut il faire
pour du pas a pas c'est du pas a pas et vous remercie de votre
patiente
cordialement
stéphane dellaux

On 15 mai, 20:25, cousinhub wrote:
Re-, envoyer le fichier en BAL (Boîte A Lettres) perso, c'est une
solution, le faire soi-même c'est mieux, non?;-)
Alt + F11, c'est un raccourci clavier (appui sur la touche Alt et en
même temps sur la touche de fonction F11).
Autre moyen, clic droit sur l'onglet de ta feuille : Visualiser le code
Et tu continues...









Avatar
cousinhub
Bonsoir,
Continuaons le pas à pas ....journalier ;-)
Si c'est écrit dans le bouton "CommandBut" (en réalité "CommandButton1",
tout le texte n'apparaît pas), c'est que tu as utilisé la barre d'outils
"Contrôles" pour le créer.
Il existe au moins 2 autres façons de le créer, la barre d'outils
"Formulaires" ou la barre d'outils "Dessin".
Te donner un avantage l'un par rapport à l'autre, quelques uns l'ont
déjà expliqué sur le forum.
Cependant avec ce bouton, j'ai une erreur dans le déroulement de la
procédure, il me semble que ceci est dû au fait que la procédure est
inscrite dans le code de la feuille et non dans un module.....
Si tu utilises un bouton de commande de la barre d'outils "Formulaires",
clic droit dessus et affecter une macro, tu choisis la macro qui va bien.
Autre possibilité, que j'adopte en général, je dessine, ou j'insère un
objet via la barre d'outils "Dessin", le personnalise (couleur, texte,
dessin), puis clic droit/Affecter une macro, etc....
A partir de ce moment, dès que tu passeras la souris dessus, une petite
mimine va apparaitre.
PS : As-tu bien déterminé la zone nommée "Base"?
On y est, on y est....

Rebonjour,
alors c'est ok j'ai bien défusionné cellules dans la base de données
des dates
dans l'autre feuille j'ai recopié in-extenso toute les cellules de
l'exemple et positionnées au meme endroit.
j'ai bien copier dans le VBA la macro, pour la partie surlignée en
rouge j'avais trouvé par moi-même (deviendrai-je un pro
d'excel ?.......rires) en enlevant les espaces ....il m'arrive d'avoir
des intuitions !!!!! re rires.
bon maintenant par contre je coince avec le bouton
je sais le créer il est positionner et il est inscrit "command but"
mais comme je pense qu'il manque une macro affectée a ce bouton
evidemment rien ne se passe si j'inscrit une date quelconque et je
clique sur le bouton...
que faut il faire
pour du pas a pas c'est du pas a pas et vous remercie de votre
patiente
cordialement
stéphane dellaux

On 15 mai, 20:25, cousinhub wrote:
Re-, envoyer le fichier en BAL (Boîte A Lettres) perso, c'est une
solution, le faire soi-même c'est mieux, non?;-)
Alt + F11, c'est un raccourci clavier (appui sur la touche Alt et en
même temps sur la touche de fonction F11).
Autre moyen, clic droit sur l'onglet de ta feuille : Visualiser le code
Et tu continues...












1 2