Condition pour copier

  • Initiateur de la discussion Initiateur de la discussion Turbo
  • 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 !

Turbo

XLDnaute Junior
Alors voila, je refais appel a vos talents de VBAiste pour m'aider a résoudre un problème....

Explication de ma macro :

La macro çi dessous permet d'enregistrer des valeurs qui sont sur la feuille source ( qui est propre aux utilisateurs, et qui possède le bouton pour activer ma macro ) vers une autre feuilles excel.
Selon les initiales rentrées dans la feuille source, la macro permettra d'enregistrer les données de la feuille source, dans différentes colonnes de la feuille de destination.

Code:
Private Sub Enregistrer_Click()
        
    Dim myRange As Range
    Workbooks("Formulaire heures modif 08.xls").Activate
    With Sheets("Mensuel")
    .Range("AK7:AK81").Copy
    If Val(Cells(3, 25).Value) = "MLB" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("B7:B81")
    ElseIf Val(Cells(3, 25).Value) = "IB" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("C7:C81")
    ElseIf Val(Cells(3, 25).Value) = "MHR" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("D7:D81")
    ElseIf Val(Cells(3, 25).Value) = "FF" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("E7:E81")
    ElseIf Val(Cells(3, 25).Value) = "Gry" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("F7:F81")
    ElseIf Val(Cells(3, 25).Value) = "CR" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("H7:H81")
    ElseIf Val(Cells(3, 25).Value) = "GB" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("I7:I81")
    ElseIf Val(Cells(3, 25).Value) = "OA" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("K7:K81")
    ElseIf Val(Cells(3, 25).Value) = "HD" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("L7:L81")
    ElseIf Val(Cells(3, 25).Value) = "PM" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("M7:M81")
    ElseIf Val(Cells(3, 25).Value) = "SG" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("N7:N81")
    ElseIf Val(Cells(3, 25).Value) = "KI" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("O7:O81")
    ElseIf Val(Cells(3, 25).Value) = "CM" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("P7:P81")
    ElseIf Val(Cells(3, 25).Value) = "AR" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("Q7:Q81")
    ElseIf Val(Cells(3, 25).Value) = "FE" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("R7:R81")
    ElseIf Val(Cells(3, 25).Value) = "PF" Then
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        With Sheets("DEC")
        Set myRange = Worksheets("DEC").Range("S7:S81")
    Else
        MsgBox ("Erreur dans le nom")
    End If
    End With
    myRange.Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    End With
            
End Sub

Je n'arrive pas a corriger le code pour qu'il fonctionne ( et qu'il fasse ce dont je demande accessoirement ) ...

Merci de prendre de votre temps a essayer de m'aider 😉

Je vous joins avec, les 2 fichiers excels :

Edit : Il faut que les deux fichiers excel soient ouvert !!
 

Pièces jointes

Dernière édition:
Re : Condition pour copier

Bonjour Turbo, bonjour le forum,

Elle est sur quel Classeur / Onglet la cellule Cells(3, 25) ?
Peut-être manque-t-il juste un point devant : If Val(.Cells(3, 25).Value) si c'est une cellule de l'onglet Mensuel du classeur Formulaire heures modif 08.xls.
 
Re : Condition pour copier

Salut,

Elle n'a pas finit de planter ta macro.

Tu ouvres des "With" sans jamais les refermer.
Pour information, les "With" sont là pour faciliter la lecture de nous, pauvres humains.

With Selection
.value=15
End With


Reviens à écrire
Selection.value=15

Mais permet en cas d'action multiple de ne pas réécrire "Selection"

Les "With" peuvent être imbriqués mais doivent être refermé avant toutes instructions de structure non imbriquées.
 
Dernière édition:
Re : Condition pour copier

Bonjour Turbo, bonjour le forum,

Essaie comme ça :
Code:
Private Sub Enregistrer_Click()
 
Dim myRange As Range
Dim s As Worksheet 'déclare la variable s
Set s = Sheets("DEC") 'définit la variasble s
Workbooks("Formulaire heures modif 08.xls").Activate
Sheets("Mensuel").Range("AK7:AK81").Copy
 
Select Case Val(Sheets("Mensuel").Cells(3, 25).Value)
 
    Case "MLB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("B7:B81")
    Case "IB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("C7:C81")
    Case "MHR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("D7:D81")
    Case "FF"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("E7:E81")
    Case "Gry"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("F7:F81")
    Case "CR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("H7:H81")
    Case "GB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("I7:I81")
    Case "OA"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("K7:K81")
    Case "HD"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("L7:L81")
    Case "PM"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("M7:M81")
    Case "SG"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("N7:N81")
    Case "KI"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("O7:O81")
    Case "CM"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("P7:P81")
    Case "AR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("Q7:Q81")
    Case "FE"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("R7:R81")
    Case "PF"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("S7:S81")
    Case Else
        MsgBox ("Erreur dans le nom")
End Select
 
myRange.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
 
End Sub
 
Re : Condition pour copier

Bonjour Turbo, bonjour le forum,

J'ai pris le temps de tester en ouvrant les fichiers et j'ai modifié pour que ça fonctionne. Ça donne :

Code:
Private Sub Enregistrer_Click()
 
Dim myRange As Range
Dim s As Worksheet 'déclare la variable s
Set s = Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Sheets("DEC")  'définit la variasble s
Workbooks("Formulaire heures modif 08.xls").Activate
Sheets("Mensuel").Range("AK7:AK81").Copy
 
Select Case Sheets("Mensuel").Cells(3, 25).Value
 
    Case "MLB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("B7:B81")
    Case "IB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("C7:C81")
    Case "MHR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("D7:D81")
    Case "FF"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("E7:E81")
    Case "Gry"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("F7:F81")
    Case "CR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("H7:H81")
    Case "GB"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("I7:I81")
    Case "OA"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("K7:K81")
    Case "HD"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("L7:L81")
    Case "PM"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("M7:M81")
    Case "SG"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("N7:N81")
    Case "KI"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("O7:O81")
    Case "CM"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("P7:P81")
    Case "AR"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("Q7:Q81")
    Case "FE"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("R7:R81")
    Case "PF"
        Workbooks("Synthése Aôut, Sept Modif2 07BIS.xls").Activate
        Set myRange = s.Range("S7:S81")
    Case Else
        MsgBox ("Erreur dans le nom")
End Select
 
myRange.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
 
End Sub
 
- 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

Réponses
5
Affichages
394
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
644
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
224
Retour