Fonction RechercheV et Index et Equiv

Bonjour

En pièce jointe un fichier qui comprend plusieurs onglets

Dans la feuille synthèse de tous les onglets je cherche à obtenir à partir de l’immatriculation
Avec la fonction rechercheV les colonnes F;G;H

Dans le gestionnaire de noms j’ai crée “PLAGE” qui correspond à tous les onglets,malgrès cela il n’y a que le premier onglet qui est pris en compte.
Avec la fonction Index et Equiv les colonnes B;C;D.
mais là je suis bloqué.

Merci de bien vouloir m’aider
Cordialement
Test Ceiste_B.xlsm (35,0 Ko)

Bonsoir,
J’ai rien compris
Avec la fonction rechercheV les colonnes F;G;H
Avec la fonction Index et Equiv les colonnes B;C;D.

Il suffit de préciser la colonne de quel onglet (n’importe lequel) il faut mettre dans quelle colonne dans l’onglet Synthèse et se sera plus clair, en sachant que ce genre de résolution ne pourra passer que par macro pour faire au plus simple.
Après par formule, avec des colonnes additionnelles c’est surement possible aussi

Préciser aussi si le nombre d’onglet est évolutif

Bonjour

En pièce jointe un fichier qui comprend plusieurs onglets.
j’ai revu ma copie,j’espère être plus clair ce coup-ci.
Dans ma feuille Synthèse je n’ai que l’immatriculation des véhicules et je cherche les autres éléments dans chaque onglet.
Avec la fonction rechercheV dans chaque colonne (titre de colonne) A ;KILOMETRAGE ;B ;C ;D ;E de la feuille synthèse
Qui correspondent respectivement aux colonnes (titre de colonne) A ; RELEVE COMPTEUR KILOMETRIQUE ;B ;C ;D ;E de tous les onglets

Avec la fonction Index et Equiv dans chaque colonne
Département ;Lieux ; MODELES VEHICULES ; TYPE CARBURANT.de la feuille synthèse
Qui correspondent respectivement aux colonnes Département ; Lieux ;MODELES VEHICULES ; TYPE CARBURANT de tous les onglets
Le nombre d’onglet est évolutif
Du coup j’ai revu le fichier pour qu’il y ait le moins d’écueils possible.
Ma réflexion est basée sur la faisabilité avec les fonctions Recherchev et INDEX et EQUIV
Merci pour l’aide apportée
Cordialement
Test Ceiste_B1.xlsm (42,4 Ko)

Bonjour,

Si le nombre d’onglet pour chauffeur est évolutif, il faut passer par VBA

Un Test

La macro :

Sub Transfert()
Dim Ws As Worksheet, Wd As Worksheet, Dl%, i%, j% 'Déclaration des variables
Application.ScreenUpdating = False 'Désactive le rafraissement Ecran
Range("B4:E28,G4:L28").ClearContents 'nettoie la feuille Synthèse
j = 4
Set Wd = Sheets("Synthèse")
  For Each Ws In Worksheets 'Boucle sur les onglets
    If Ws.Name <> "Synthèse" Then 'sauf l'onglet de Synthèse
      Sheets(Ws.Name).Activate 'Active l'onglet
      Set Ws = Sheets(Ws.Name)
      Dl = Ws.Range("G" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne G
        For i = 10 To Dl 'boucle sur les lignes
          If Ws.Cells(i, 7).Value = Wd.Cells(j, 6).Value Then
            Ws.Activate
            Ws.Range(Cells(i, 3), Cells(i, 6)).Copy
            Wd.Cells(j, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False 'copie vers la feuille Recap
            Ws.Activate
            Ws.Cells(i, 8).Copy
            Wd.Cells(j, 7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
            Ws.Activate
            Ws.Cells(i, 11).Copy
            Wd.Cells(j, 8).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
            Ws.Activate
            Ws.Range(Cells(i, 25), Cells(i, 28)).Copy
            Wd.Cells(j, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
            
            j = j + 1 'ajoute 1 au compteur de ligne feuille Recap
          End If
        Next i
      End If
  Next Ws
  Sheets("Synthèse").Activate
  Range("A1").Select
  Application.ScreenUpdating = True
End Sub

Test Ceiste_B1 test.xlsm (50,5 Ko)

Bonjour
Le fichier que tu m’as fourni est correct.
Après adaptation à mon fichier original il fonctionne.
Le classeur en question est composé de 19 Feuilles ,délais d’exécution de la Macro 20 secondes est-ce normal?
Merci de jeter un coup d’oeil si possible.
Bonne fin de journée
Ci-dessous le code de la macro incriminée

Option Explicit
Sub Transfert()
Dim Ws As Worksheet, Wd As Worksheet, Dl%, i%, j% 'Déclaration des variables
Application.ScreenUpdating = False 'Désactive le rafraichissement de l’écran
Range(“B4:E47,G4:L47”).ClearContents 'nettoie la feuille Véhicules
j = 4
Set Wd = Sheets(“Vehicules”)
For Each Ws In Worksheets 'Boucle sur les onglets
'sauf certains onglets
If Ws.Name <> “Vehicules” And Ws.Name <> “Total_semaines” And Ws.Name <> “TCD” And Ws.Name <> “Donnees” Then
Sheets(Ws.Name).Activate 'Active l’onglet
Set Ws = Sheets(Ws.Name)
Dl = Ws.Range(“G” & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne G
For i = 10 To Dl 'boucle sur les lignes
If Ws.Cells(i, 7).Value = Wd.Cells(j, 6).Value Then
Ws.Activate
Ws.Range(Cells(i, 5), Cells(i, 6)).Copy
Wd.Cells(j, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'copie vers la feuille Recap
Ws.Activate
Ws.Cells(i, 1).Copy
Wd.Cells(j, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Ws.Activate
Ws.Cells(i, 3).Copy
Wd.Cells(j, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Ws.Activate
Ws.Cells(i, 8).Copy
Wd.Cells(j, 8).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

        Ws.Activate
        Ws.Cells(i, 11).Copy
        Wd.Cells(j, 7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
        Ws.Activate
        Ws.Range(Cells(i, 25), Cells(i, 28)).Copy
        Wd.Cells(j, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
         j = j + 1 'ajoute 1 au compteur de ligne feuille Recap
      End If
    Next i
  End If

Next Ws
Sheets(“Vehicules”).Activate
Range(“A1”).Select
Application.ScreenUpdating = True
End Sub

Re,

19 feuilles et combien de lignes par feuilles ??

Bonsoir

15 Feuilles concernées par la macro à 50 lignes chacune .

4 feuilles non concernées par la macro dont une feuille à 852 lignes.

Merci

Re,

Alors sache que chaque N° d’immat. va faire le tour des tes 19 feuilles pour vérifier si le N° existe
Et tu n’auras pas plus vite, même en macro (Dictionnary ou tableau)

Après, savoir s’il n’y aurait pas un traitement à faire en amont sur les onglets???

Bonjour,

A tester avec une autre conception de la recherche qui devrait aller plus vite
Test Ceiste_B1 test (2).xlsm (51,9 Ko)

Bonjour
Effectivement de 20 secondes je suis passé à 4 secondes.
La macro fonctionne bien mais une fois dans le fichier original elle ne prend pas en compte dans l’équivalent du fichier synthèse les 5 dernières lignes (derniers véhicules) de la colonne F de ce fichier.
Sur les autres véhicules pas de soucis.
Il s’agit bien des 5 dernières lignes car j’ai testé en inversant les véhicules.
Les 5 dernières lignes hormis l’immatriculation du véhicule (qui reste à demeure) sont vides à l’issue de l’exécution de la macro.
Merci pour l’aide accordée.
Cordialement

Bonjour,

Au mieux, passe ton classeur en PJ sur message privé :wink:

Merci
Ce n’est pas possible tel quel mais je vais trouver une solution en adaptant le fichier test qui reproduira la même erreur , ou du moins je vais essayer.
Merci et bonne soirée.

Re,
Regarde si dans la colonne qui contient tous les N°, il n’y a pas de ligne vide

Pas de ligne vide dans la colonne concernée

Re,

Alors est ce que les 5 dernier N° sont sur un même onglet
et
est ce que ces N° sur l’onglet concerné sont dans la même colonne que les autres

Sinon je ne vois pas

Les cinq numéros sont sur un même onglet et dans la même colonne,la colonne G.

Bonjour

En PJ le fichier test avec le dysfonctionnement au niveau de la macro située dans la feuille synthèse.
Les 5 dernières lignes (derniers véhicules) de la colonne F de cette feuille ne sont pas prises en compte.
Sur les autres véhicules pas de soucis.
Il s’agit bien des 5 dernières lignes car j’ai testé en inversant les véhicules.
Les 5 dernières lignes hormis l’immatriculation du véhicule (qui reste à demeure) sont vides à l’issue de l’exécution de la macro.
Merci
Cordialement
Test Ceiste_B1 test (2).xlsm (56,4 Ko)

Bonjour,

J’ai vu le problème,
Même principe mais en inversant la recherche
Test Ceiste_B1 test (2) (2).xlsm (55,6 Ko)

Bonsoir
Après modification pour l’adapter au fichier original , le fichier est fonctionnel.
Merci pour le temps et la patience consacrée.
Pourrais tu m’indiquer un livre traitant du VBA,un livre simple et facilement exploitable pour un débutant.
Passes une bonne semaine
Bonne soirée
Cordialement

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.