Récupération des données de la fenetre 1 dans la fenetre 2

Bonjour ,

Je me permet de vous écrire car je suis dans une impasse

Je n'ai pas de base de code VBA , je compte commencer à apprendre mais la je suis devant un dilemme

Je dois réaliser un code qui me permet de :

En fonction de la valeur de ma cellule "N°OT" saisi manuellement dans la fenêtre A2

La macro doit aller dans la fenêtre A1 chercher les données correspondant à ce numéro d'OT (Nom/Prénom/Nb d'heure/compte rendu/Divers) => La macro doit parcourir toutes les lignes du tableau et récupérer toutes les lignes correspondante à mon numéro d'OT et les mettre dans le tableau se trouvant dans le fenêtre A2

Je vous ai joint le ficheir excel

Je vous remercie par avance pour votre Aide

17suivi-travaux.xlsx (27.39 Ko)

Bonjour souki,

ton fichier ne contient aucune donnée à copier !

je veux bien t'aider si tu joins ton fichier avec des données fictives.

dhany

Bonjour,

Je vous remercie , je vous ai crée une petite base de données

MErciiii

12suivi-travaux.xlsx (25.64 Ko)

J’ai vraiment besoin de votre aide plzz

Bonsoir souki,

je te retourne ton fichier modifié :

13suivi-travaux.xlsm (34.55 Ko)

* Ctrl e ➯ travail effectué !

* sans devoir effacer les résultats actuels, saisis en D3 un autre N° OT, puis fais Ctrl e

* attention : cette macro fonctionne seulement depuis la feuille "A2"

* bien sûr, ça fera rien si y'a pas de N° OT (D3 est vide)


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Je vous remercie,

Le programme fonctionne parfaitement c'est vraiment top

Si vous avez besoin de l'aide en mécanique des fluides ou en méca générale n’hésitez pas à m'écrire

Milles merci

Bonsoir souki,

j'viens d'lire ton post ; merci pour ton retour, et pour avoir passé le sujet en résolu ! merci aussi pour ta gentille proposition, même si j'ai aucun besoin actuel ou futur en mécanique des fluides, ni en méca générale ; heureusement, même sans mécanique des fluides, j'ai un assez bon feeling avec VBA.

bonne continuation !

dhany

Bonjour souki,

j'ai trouvé dans mon code VBA une bonne optimisation à faire ; remplace tout ce bloc :

With Cells(j, 4)
  .Value = Tbl(i, 2)        'Nom
  .Offset(, 1) = Tbl(i, 3)  'Prénom
  .Offset(, 2) = Tbl(i, 4)  'Nb d'heure
  .Offset(, 3) = Tbl(i, 5)  'compte rendu
  .Offset(, 4) = Tbl(i, 6)  'Divers
End With

par cette seule ligne :

Cells(j, 4).Resize(, 5) = Application.Index(Tbl, i, [Column(B:F)])

ça fera la même chose, plus rapidement ; peut-être que le gain de temps ne sera perceptible que pour un très grand nombre de lignes dans ton tableau de la feuille "A1" ? mais de toute façon, le code VBA de la macro est plus court ! attention : dessous, laisse l'instruction j = j + 1


le code VBA complet est donc celui-ci :

Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "A2" Then Exit Sub
  Dim Tbl, OT$, n&
  OT = [D3]: If OT = "" Then Exit Sub 'sortie, car pas de N° OT
  With Worksheets("A1")
    n = .Cells(Rows.Count, 2).End(3).Row: If n = 1 Then Exit Sub
    n = n - 1: Tbl = .[B2].Resize(n, 6)
  End With
  Dim i&, j&: j = 11: Application.ScreenUpdating = 0
  i = Cells(Rows.Count, 4).End(3).Row
  If i > 10 Then Range("D11:H" & i).ClearContents
  For i = 1 To n
    If Tbl(i, 1) = OT Then
      Cells(j, 4).Resize(, 5) = Application.Index(Tbl, i, [Column(B:F)])
      j = j + 1
    End If
  Next i
End Sub

tu peux tester avec ce fichier :

5suivi-travaux.xlsm (34.70 Ko)

dhany

Rechercher des sujets similaires à "recuperation donnees fenetre"