Recherche de données marco

Résolu/Fermé
Rachel - 4 juin 2018 à 16:04
 Rachel - 5 juin 2018 à 13:27
Bonjour,

Dans une feuille excel, je souhaite sélectionner des données qui sont composées toujours du même nombre de ligne (9) mais pas située toujours au même endroit (début des données = ligne variable)

Dans l'exemple du fichier en lien, il s'agit des lignes 502 à 510 et le repère est la ligne qui contient la cellule nommée "Avg Result" => https://mon-partage.fr/f/iz3ZSnef/

Voici ce que j'avais imaginé mais qui ne fonctionne pas :
Dim LigneD As Long, ligneF As Long
LigneD = ActiveSheet.Columns(2).Find("Avg Result", , , , xlByColumns, xlNext).Row
Range("A" & LigneD & ":AA" & LigneD).Select
ligneF = selection.Offset(8, 0).Select
Range("A" & LigneD & ":AA" & ligneF).Select
selection.Copy

Merci d'avance pour votre aide.

Rachel

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 juin 2018 à 18:13
Bonjour,

Simplement :
Sub test()
Dim src As Range  'source
Dim dst As Range  'destination
  Set dst = ActiveSheet.Range("A6000") ' à adapter
  Set src = ActiveSheet.Columns(2).Find("Avg Result", , xlFormulas, xlWhole)
  If Not scr Is Nothing Then
    Set src = src.EntireRow.Resize(8)
    src.Copy dst
  End If
End Sub


0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 juin 2018 à 18:18
PS :
« Dans une feuille excel, je souhaite sélectionner des données... »
Sélectionner n'est pas une finalité, en général on souhaite faire quelque chose après : avec VBA il faut impérativement éviter de sélectionner si ce n'est pas la finalité !!!
0
Bonjour Patrice,

Merci pour cette réponse.
Effectivement, mon libellé n'est pas complet, c'était par soucis de clarté qui n'a apparemment pas eu l'effet escompté, désolée. Inutile de préciser que mes connaissances en VBA sont limitées.

Je souhaite donc copier ces données pour les coller dans une autre feuille du même fichier nommée "Validation de données", 2 lignes en dessous d'une cellule contenant le texte "Standard : Delta calculé-attendu (Avg Result)", cellule qui n'est pas toujours à la même ligne mais toujours dans la colonne A. Voilà pour l'expression complète de mon besoin. Voici le fichir mis à jour dans ce sens : https://mon-partage.fr/f/ZYX2VsUU/.

Je ne parviens pas à faire fonctionner la solution proposée car j'ai l'erreur "Erreur d'exécution "424" : Objet requis" sur la ligne "If Not scr Is Nothing Then". Une idée de ce qui bloque?

Merci d'avance, Rachel
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
5 juin 2018 à 12:56
c'est pas scr mais src
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 5 juin 2018 à 13:35
Code à mettre dans un module standard (pas dans le module de feuille) :
Option Explicit
Sub test()
Const s$ = "Avg Result"
Const d$ = "Standard : Delta calculé-attendu (Avg Result)"
Dim src As Range  'source
Dim dst As Range  'destination
  Set dst = Worksheets("Validation série").Columns(1).Find(d, , xlFormulas, xlWhole)
  Set src = Worksheets("Importation").Columns(2).Find(s, , xlFormulas, xlWhole)
  If Not src Is Nothing And Not dst Is Nothing Then
    Set src = src.EntireRow.Resize(8)
    src.Copy dst.Offset(1)
  End If
End Sub
0
Rachel > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
5 juin 2018 à 13:26
Merci :-)
0