liaison entre 2 feuilles

  • Initiateur de la discussion Initiateur de la discussion matrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matrix

XLDnaute Occasionnel
Bonjour,

Je rencontre un problème avec la liaison de données entre 2 feuilles EXCEL.

Je veux que les données de la feuille "Employés + quart de travail" se copie dans la feuille "Données + suivi".

C'est à dire que le "SHIFT" , "le "NOM" et la "CLASSIFICATION" qui se retrouve dans la feuille "Employés + quart de travail" se place à coté du nom dans la feuille "Données + suivi".

Comment faire svp?

Merci de votre aide.
 

Pièces jointes

Dernière édition:
Re : liaison entre 2 feuilles

Bonjour,

si j'ai bien compris, remplace ton code par celui-ci:

Code:
Private Sub CommandButton1_Click()
Dim opid As Range, trouve_opid As Range
Application.ScreenUpdating = False
With Sheets("Employés + quart de travail")
    For Each opid In .Range(.[A2], .[A2].End(xlDown))
        Set trouve_opid = Columns("C").Find(opid.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not trouve_opid Is Nothing Then
            trouve_opid.Offset(0, 2).Value = opid.Offset(0, 1).Value
            trouve_opid.Offset(0, 3).Value = opid.Offset(0, 2).Value
            trouve_opid.Offset(0, 9).Value = opid.Offset(0, 3).Value
        End If
    Next
End With
Application.ScreenUpdating = True
End Sub
 
Re : liaison entre 2 feuilles

Merci ftho.

Je vois ou est mon problème maintenant.

C'est que l'on part de la feuille "Employés + quart de travail" et on recherche le opid dans la feuille "Données + suivi". Donc si le nom ne se trouve pas dans a feuille "Données + suivi", il affche un message.

En réalité, je dois faire l'inverse. Trouver les nom qui se trouve dans la feuille "Données + suivi" et chercher les valeur dans la feuille "Employés + quart de travail".

Le résultat final sera le même mais il se basera sur la feuille Données + suivi.
 
Re : liaison entre 2 feuilles

c'est juste une petite adaptation du code
Code:
Private Sub CommandButton1_Click()
Dim i As Integer, DerL As Integer, r As Integer, Opid As String

DerL = Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row

For i = 2 To DerL
Opid = Sheets(2).Cells(i, 3).Text
    Set C = Sheets(1).Range("A:A").Find(what:=Opid, lookat:=xlWhole)
        If Not C Is Nothing Then
            r = C.Row
            Sheets(2).Cells(i, 5) = Sheets(1).Cells(r, 2)
            Sheets(2).Cells(i, 6) = Sheets(1).Cells(r, 3)
            Sheets(2).Cells(i, 12) = Sheets(1).Cells(r, 4)
        Else
            MsgBox Opid & " n'existe pas dans la feuille Employés"
        End If
Next i

End Sub
 
Re : liaison entre 2 feuilles

Super, ça fonctionne super bien.

Dernière chose, j'ai fais une formule dans la colonne J : =SI(D12<0.899,"INF",SI(D12>0.96,"SUP",SI(D12<=0.899,"90à92",SI(D12<0.9299,"90à92",SI(D12<=0.93,"92à95",SI(D12<=0.959,"92à95","")))))).

Ce que je voudrais, au lieu d'avoir une formule, plutôt l'intégré dans le script vba:

Dim i As Integer, DerL As Integer, r As Integer, Opid As String

DerL = Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row

For i = 2 To DerL
Opid = Sheets(2).Cells(i, 3).Text
Set C = Sheets(1).Range("A:A").Find(what:=Opid, lookat:=xlWhole)
If Not C Is Nothing Then
r = C.Row
Sheets(2).Cells(i, 5) = Sheets(1).Cells(r, 2)
Sheets(2).Cells(i, 6) = Sheets(1).Cells(r, 3)
Sheets(2).Cells(i, 10) = LA FONCTION SI MENSSIONÉ PLUS HAUT
Sheets(2).Cells(i, 12) = Sheets(1).Cells(r, 4)
Else
'MsgBox Opid & " n'existe pas dans la feuille Employés"
End If
Next i

MsgBox "Terminé"
End Sub



Comment faire svp?

Merci beaucoup
 

Pièces jointes

Re : liaison entre 2 feuilles

Il faudrait d'abord que tu m'écrives les résultats que tu souhaites obtenir et sous quelles conditions parce qu'elle ne me semble pas très cohérente ta formule, on trouve au début SI D12<0.899 alors "INF", un peu plus loin SI D12<=0.899 alors "90à92" et encore un peu plus loin SI D12<0.9299 alors "90à92"
 
Re : liaison entre 2 feuilles

Bonjour ftho,

J'ai trouvé après plusieurs heures.

Code:
Dim lgLig As Long
    
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0 Then
            Range("J" & lgLig) = "INF"
        End If
    Next lgLig
    
    
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.9 Then
            Range("J" & lgLig) = "90à92"
        End If
    Next lgLig
    
    
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.93 Then
            Range("J" & lgLig) = "93à95"
        End If
    Next lgLig
    
    
     For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        If Range("D" & lgLig) >= 0.96 Then
            Range("J" & lgLig) = "SUP"
        End If
    Next lgLig


Merci pour ton aide 🙂
 
Re : liaison entre 2 feuilles

Bonjour,
tu peux aussi essayer avec les select case (plus rapide, une fois la solution trouvée, on sort de la condition, et on continue la boucle) :

Code:
Dim lgLig As Long
    
    For lgLig = 12 To Range("D" & Cells.Rows.Count).End(xlUp).Row
        Select Case Range("D" & lgLig)
            Case Is >= 0.96
                Range("J" & lgLig) = "SUP"
            Case Is >= 0.93
                Range("J" & lgLig) = "93à95"
            Case Is >= 0.9
                Range("J" & lgLig) = "90à92"
            Case Is >= 0
                Range("J" & lgLig) = "INF"
        End Select
    Next lgLig
 
Re : liaison entre 2 feuilles

Bonjour ftho,Matrix,Skoobi et tout le forum

J 'ai vu je que vous pouvez faire en macro... c magnifique. J'ai presque le meme problem et j' ai vraiment besoin de votre aide si c possible

La difference c que je veut transfere les données de plusieurs fichiers et les copier dans une base de donnes en tenant compte de criteres. (Note:tout les lignes et les colonnes dans tou les fichiers sont identique..)

J'ai deja envoyer les fichiers (subjetc : Liaison entre fichier)

Merci d ' avance

Salutation
Adil
 
Re : liaison entre 2 feuilles

Re,

J'ai un code erreur dans le scripte:
Code:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False

Dim i As Integer, DerL As Integer, r As Integer, Opid As String
  Dim Durée As Single
   
    Durée = Timer
[COLOR="Red"]DerL = Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row[/COLOR]

For i = 11 To DerL
Opid = Sheets(2).Cells(i, 3).Text
    Set C = Sheets(1).Range("A:A").Find(What:=Opid, LookAt:=xlWhole)
        If Not C Is Nothing Then
            r = C.Row
            Sheets(2).Cells(i, 5) = Sheets(1).Cells(r, 2)
            Sheets(2).Cells(i, 6) = Sheets(1).Cells(r, 3)
            Sheets(2).Cells(i, 11) = Sheets(1).Cells(r, 4)
        Else
            'MsgBox Opid & " n'existe pas dans la feuille Employés"

        End If
Next i

Si j'ai plus de 30000 lignes, il me dit Erreur d'exécution "6", Dépassement de capassité!

Comment puis-je faire pour qu'il traite jusqu'à 55000 lignes?
 
Re : liaison entre 2 feuilles

Oh lala, la je comprend plus:

j'ai changé pour :

Code:
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False

Dim i As Long, DerL As Long, r As Long, Opid As Long
  Dim Durée As Single
   
    Durée = Timer
DerL = Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row

For i = 11 To DerL
[COLOR="Red"][B]Opid = Sheets(2).Cells(i, 3).Text[/B][/COLOR]
    Set C = Sheets(1).Range("A:A").Find(What:=Opid, LookAt:=xlWhole)
        If Not C Is Nothing Then
            r = C.Row
            Sheets(2).Cells(i, 5) = Sheets(1).Cells(r, 2)
            Sheets(2).Cells(i, 6) = Sheets(1).Cells(r, 3)
            Sheets(2).Cells(i, 11) = Sheets(1).Cells(r, 4)
        Else
            'MsgBox Opid & " n'existe pas dans la feuille Employés"

        End If
Next i

Et la il me donne l'erreur exécution 13, incompatibilité de type 😕
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
429
Réponses
3
Affichages
146
Retour