Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche cellule dans plusieurs feuilles (VBA)

Anthony.29

XLDnaute Nouveau
Bonjour,

J'aurais besoin de votre aide, je ne vois vraiment plus comment faire...
Je m'explique :
Je possède deux fichiers Excel, l'un "Gestion" avec plusieurs feuilles et l'autre "Suivi" avec une unique feuille.
Je souhaite rechercher dans "Gestion" la feuille pour laquelle la cellule B1 est égale à la cellule B1 du fichier "Suivi".
Puis, copier la ligne 19 de la feuille correspondante
Enfin, coller cette ligne dans le fichier "Suivi".

Mon problème est que je n'arrive pas à faire la recherche de cellule parmi les différentes feuilles.

Si une personne parmi vous a une solution, j'en serai ravi.

Merci d'avance
 
Dernière édition:

Anthony.29

XLDnaute Nouveau
Voici mon état d'avancement, j'ai essayé plusieurs solutions mais aucune ne fonctionne.


Sub WorksheetLoop()

Dim WS_Count As Integer
Dim I As Integer

Workbooks("Gestion.xlsx").Activate

WS_Count = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_Count

Do Until Range("B1").Value = Workbooks("Suivi.xlsm").Sheets("Suivi").Range("B1").Value
Loop

Range("A19:O19").Copy
Workbooks("Suivi.xlsm").Sheets("Suivi").Range("A19:O19").Paste

Next I

End Sub
 

zebanx

XLDnaute Accro
Bonjour Anthony29, le forum

Un essai avec deux codes, l'un en considérant que les deux fichiers sont ouverts, l'autre qu'il faut ouvrir le fichier "gestion" mais qui serait sur le même répertoire.

Les macros sont sur le fichier "suivi.xlsm".
Ta structure était bonne, j'ai préféré utiliser une boucle for... next avec une sortie "goto prochain" par habitude.

(Et tu aurais une réponse surement plus rapide en mettant des fichiers directement, à penser la prochaine fois).

@+
 

Pièces jointes

  • gestion.xlsm
    8.6 KB · Affichages: 15
  • suivi.xlsm
    18.1 KB · Affichages: 18
Dernière édition:
C

Compte Supprimé 979

Guest
Bonjour Anthony.29, zebanx

Voici une solution
VB:
Sub WorksheetLoop()
  Dim sPath As String
  Dim WbkG As Workbook
  Dim ShtS As Worksheet
  Dim I As Integer
  ' Si la macro est dans le classeur de suivi (logiquement)
  ' Définir la feuille de travail
  Set ShtS = ThisWorkbook.Sheets("Suivi")
  ' Chemin d'accès
  sPath = "C:\Dossier\sous-dossier\"
  ' Ouvrir et définir le classeur de Gestion
  Set WbkG = Workbooks.Open(sPath & "Gestion.xlsx")
  ' Pour chaque feuille
  For I = 1 To WbkG.Sheets.Count
    ' Si le contenu de la cellule B1
    If WbkG.Sheets(I).Range("B1").Value = ShtS.Range("B1").Value Then
      ' Copier/coller les données
      WbkG.Sheets(I).Range("A19:O19").Copy Destination:=ShtS.Range("A19")
      ' Une seule occurence normalement, alors on sort de la boucle
      Exit For
    End If
  Next I
  ' Effacer les variables objet pour libérer la mémoire
  Set Sht = Nothing : Set WbkG = Nothing
End Sub

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…