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

extraire trier des données d'un tableau

6 réponses
Avatar
nico
bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico

6 réponses

Avatar
ChrisV
Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico


Avatar
ChrisV
Oups...
p'tite coquille...
replacer la ligne
.Range("D" & nL & ":AB" & nL).Copy _

par
.Range("D" & nL & ":BD" & nL).Copy _


ChrisV


"ChrisV" a écrit dans le message de news:

Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne
sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico






Avatar
nico
merci de ta reponse qui m'a mis sur la piste
apres quelques petites correction ca fonctionne a merveille.


Private Sub Worksheet_Change(ByVal Target As Range)
'declaration de variable
Dim nL As Long

'Application.ScreenUpdating = False
Application.ScreenUpdating = True

If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1").Select

'si feuil1 n'existe pas on annule la macro
On Error Resume Next

'recherche occurence
[Zn].Find(what:=Target).Activate


'message au cas ou la recherche ne donne rien
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Aucune Occurence Touvée !"
End
Else


nL = Selection.Row
'pour une plage de recherche sur les colonnes A à BD
'copiées en feuille 2 en plae D1 a G1785
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
(Sheets("Feuil2").Range("D1:G1785"))

'retour en feuil2
Sheets("Feuil2").Select


End If
End With
Else: Exit Sub
End If
End Sub

--
nico



Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico







Avatar
nico
ne pas tenir compte du code de mon message precedent au final ca donne cela

vous avez bien vu l'erreur de AD en BD mais il faut aussi mettre
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
a la place de
.Range("A" & nL & ":BD" & nL).Copy _
autrement il travail sur la feuil2 ce que je trouve bizarre vu qu'avant on
select la feuil1
mais chez moi impossible sans la modif.


Private Sub Worksheet_Change(ByVal Target As Range)
'declaration de variable
Dim nL As Long

Application.ScreenUpdating = False


If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1").Select

'si feuil1 n'existe pas on annule la macro
On Error Resume Next

'recherche occurence
[Zn].Find(what:=Target).Activate


'message au cas ou la recherche ne donne rien
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Aucune Occurence Touvée !"
End
Else


nL = Selection.Row
'pour une plage de recherche sur les colonnes A à BD
'copiées en feuille 2 en plae D1 a BD1785
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
(Sheets("Feuil2").Range("D1:BH1"))

'retour en feuil2
Sheets("Feuil2").Select


End If
End With
Else: Exit Sub
End If
End Sub
--
nico



merci de ta reponse qui m'a mis sur la piste
apres quelques petites correction ca fonctionne a merveille.


Private Sub Worksheet_Change(ByVal Target As Range)
'declaration de variable
Dim nL As Long

'Application.ScreenUpdating = False
Application.ScreenUpdating = True

If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1").Select

'si feuil1 n'existe pas on annule la macro
On Error Resume Next

'recherche occurence
[Zn].Find(what:=Target).Activate


'message au cas ou la recherche ne donne rien
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Aucune Occurence Touvée !"
End
Else


nL = Selection.Row
'pour une plage de recherche sur les colonnes A à BD
'copiées en feuille 2 en plae D1 a G1785
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
(Sheets("Feuil2").Range("D1:G1785"))

'retour en feuil2
Sheets("Feuil2").Select


End If
End With
Else: Exit Sub
End If
End Sub

--
nico



Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico









Avatar
nico
et aussi remplacer

(Sheets("Feuil2").Range("D" & nL - 9))

par

(Sheets("Feuil2").Range("D1:BH1"))
--
nico



Oups...
p'tite coquille...
replacer la ligne
..Range("D" & nL & ":AB" & nL).Copy _

par
..Range("D" & nL & ":BD" & nL).Copy _


ChrisV


"ChrisV" a écrit dans le message de news:

Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne
sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico











Avatar
ChrisV
Re,

ne pas tenir compte du code de mon message precedent..


ça me paraissait en effet curieux...


... mais il faut aussi mettre...
... bizarre


Non, normal ...!
initialement on trouve:
----------
With Sheets("Feuil1")
.Select
...
...
.Range("A" & nL & ":BD" & nL).Copy _
...
End With
----------

.Range("A" & nL & ":BD" & nL).Copy _
le point précédent "Range" qualifie sans ambiguïté la source de la copie, et
définie bien cette plage comme appartenant à Feuil1...

Alors que ta modification:
With Sheets("Feuil1").Select
ne définie plus l'objet Feuil1 nécessaire à l'affectation de propriété, et
ne permet plus par la suite, et de façon explicite, la qualification de la
plage Range("A" & nL & ":BD" & nL).

Tu pourrais donc aussi bien te passer de la structure de contrôle With/End
With...


ChrisV


"nico" a écrit dans le message de news:

ne pas tenir compte du code de mon message precedent au final ca donne
cela

vous avez bien vu l'erreur de AD en BD mais il faut aussi mettre
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
a la place de
.Range("A" & nL & ":BD" & nL).Copy _
autrement il travail sur la feuil2 ce que je trouve bizarre vu qu'avant on
select la feuil1
mais chez moi impossible sans la modif.


Private Sub Worksheet_Change(ByVal Target As Range)
'declaration de variable
Dim nL As Long

Application.ScreenUpdating = False


If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1").Select

'si feuil1 n'existe pas on annule la macro
On Error Resume Next

'recherche occurence
[Zn].Find(what:=Target).Activate


'message au cas ou la recherche ne donne rien
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Aucune Occurence Touvée !"
End
Else


nL = Selection.Row
'pour une plage de recherche sur les colonnes A à BD
'copiées en feuille 2 en plae D1 a BD1785
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
(Sheets("Feuil2").Range("D1:BH1"))

'retour en feuil2
Sheets("Feuil2").Select


End If
End With
Else: Exit Sub
End If
End Sub
--
nico



merci de ta reponse qui m'a mis sur la piste
apres quelques petites correction ca fonctionne a merveille.


Private Sub Worksheet_Change(ByVal Target As Range)
'declaration de variable
Dim nL As Long

'Application.ScreenUpdating = False
Application.ScreenUpdating = True

If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1").Select

'si feuil1 n'existe pas on annule la macro
On Error Resume Next

'recherche occurence
[Zn].Find(what:=Target).Activate


'message au cas ou la recherche ne donne rien
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Aucune Occurence Touvée !"
End
Else


nL = Selection.Row
'pour une plage de recherche sur les colonnes A à BD
'copiées en feuille 2 en plae D1 a G1785
Sheets("Feuil1").Range("A" & nL & ":BD" & nL).Copy _
(Sheets("Feuil2").Range("D1:G1785"))

'retour en feuil2
Sheets("Feuil2").Select


End If
End With
Else: Exit Sub
End If
End Sub

--
nico



Bonjour Nico,

Avec la plage de données Feuil1!A10:BD1795 nommée ici Zn
dans la feuille de code de l'onglet Feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nL As Long
Application.ScreenUpdating = False
If Target.Address = "$A$1" And Not IsEmpty(Target) Then
With Sheets("Feuil1")
.Select
On Error Resume Next
[Zn].Find(what:=Target).Activate
If Err.Number <> 0 Then
Sheets("Feuil2").Select
Application.ScreenUpdating = True
MsgBox "Pas trouvé !"
End
Else
nL = Selection.Row
.Range("D" & nL & ":AB" & nL).Copy _
(Sheets("Feuil2").Range("D" & nL - 9))
Sheets("Feuil2").Select
End If
End With
Else: Exit Sub
End If
End Sub


ChrisV


"nico" a écrit dans le message de
news:

bonjour,

j'ai une liste en feuille 1 qui va de A10 - BD10 a A1795 - BD1795

Je voudrais faire par macro une extraction (copie selon un critere)

en gros sur ma feuille 2 en cellule a1 je tappe un mot et quand je
valide
je veux chercher ce mot dans la plage précitée en feuille 1
et que de D1 a D1785 s'affiche la ligne ou le mot tappe aura ete
trouvé.

je vois bien comment faire la recherche avec la fonction LIKE mais ne
sais
pas comment rappatrier la ligne entiere et la copier sur la feuille 2

si vous pouviez m'aider svp
--
nico