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

XL 2019 Macro copier coller suivant condition

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

netparty

XLDnaute Occasionnel
Bonjour à tous

Je permet de poster une demande d'aide de votre part.

Depuis un programme tiers, je reçois un fichier brut excel, ce fichier sert à calculer les interventions et j'aimerais trouver une macro qui copie les bonnes formules à la bonne place.

Mes formules se trouvent dans l"onglet "FORMULES" et mon fichier brut dans l'onglet "IMPORT".
Suivant le code d'intervention j'aimerais copier la formule correspondante de l'onglet "FORMULES"

Exemple :

Onglet FORMULES B3 => Onglet IMPORT colonne O (Pour les SLA01)
Onglet FORMULES C3 => Onglet IMPORT colonne X (Pour les SLA01)
Onglet FORMULES D3 => Onglet IMPORT colonne Y (Pour les SLA01)
Onglet FORMULES E3 => Onglet IMPORT colonne N (Pour les SLA01)

et ainsi de suite pour tout les SLA correspond.

Merci d'avance

Bonne soirée
 

Pièces jointes

Solution
ok.. pourquoi ne pas mettre directement le fichier avec tes bonnes formules dès le début... soit..
un test ici:
VB:
Sub Set_Formula()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("IMPORT")
    fin = .UsedRange.Rows.Count 'dernière ligne de la feuille Import
    For i = 2 To fin 'pour chaque ligne de la feuille IMPORT
        formuleO = "" 'on initialise les formules
        formuleX = ""
        formuleY = ""
        formuleN = ""
    
        SLACode = .Range("J" & i) 'récupère le code SLA en colonne J
        Set trouve = Sheets("FORMULES").Range("A:A").Find(SLACode, lookat:=xlWhole) 'on cherche le code dans la colonne A due la feuille "FORMULES"
        If Not trouve Is Nothing Then 'si...
Hello

Je ne comprend pas tes formules
dans ta feuille "Formules"
pour une colonne (colB par exemple) TOUTES les lignes ont la meme formule..au numéro de ligne prêt... le SLA Code utilisé est toujours le SLA1... erreur ???
 
Hello

Je ne comprend pas tes formules
dans ta feuille "Formules"
pour une colonne (colB par exemple) TOUTES les lignes ont la meme formule..au numéro de ligne prêt... le SLA Code utilisé est toujours le SLA1... erreur ???
Bonjour vgendron

Erreur de ma part dans mes formules
voici le fichier corrigé
 

Pièces jointes

Hello

Je ne comprend toujours pas tes formules...
quelque soit la valeur du SLA 01 02 03...ou 09, tu fais toujours le meme calcul avec les meme valeurs de bonus..
le type de SLA n'a aucun effet sur ton calcul...

dans ta feuille Bonus.. la colonne B.. au lieu de description 1 2 3.... ce ne serait pas justement les SLA 01 02 ... .
et donc en fonction du type SLA dans la feuille Import, tu récupères la valeur du bonus à la bonne ligne dans la feuille Bonus??

si c'est ca. je pense qu'une formule unique peut etre mise dans ta colonne O pour récuperer les données adéquates..
 
Bonjour Vgendron

Dans mon fichier exemple j'ai simplement recopier les formules, mais les formules seront différente pour chaque SLA.

Bonne journée
 
ok.. pourquoi ne pas mettre directement le fichier avec tes bonnes formules dès le début... soit..
un test ici:
VB:
Sub Set_Formula()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("IMPORT")
    fin = .UsedRange.Rows.Count 'dernière ligne de la feuille Import
    For i = 2 To fin 'pour chaque ligne de la feuille IMPORT
        formuleO = "" 'on initialise les formules
        formuleX = ""
        formuleY = ""
        formuleN = ""
    
        SLACode = .Range("J" & i) 'récupère le code SLA en colonne J
        Set trouve = Sheets("FORMULES").Range("A:A").Find(SLACode, lookat:=xlWhole) 'on cherche le code dans la colonne A due la feuille "FORMULES"
        If Not trouve Is Nothing Then 'si on l'a trouvé, on récupère les formules sur la ligne
            formuleO = Sheets("FORMULES").Range("B" & trouve.Row).Formula
            formuleX = Sheets("FORMULES").Range("C" & trouve.Row).Formula
            formuleY = Sheets("FORMULES").Range("D" & trouve.Row).Formula
            formuleN = Sheets("FORMULES").Range("E" & trouve.Row).Formula
       
        .Range("O" & i).Formula = Replace(formuleO, trouve.Row, i) 'on applique la formule dans la feuille IMPORT en modifiant les indices de la formule
        .Range("X" & i).Formula = Replace(formuleX, trouve.Row, i)
        .Range("Y" & i).Formula = Replace(formuleY, trouve.Row, i)
        .Range("N" & i).Formula = Replace(formuleN, trouve.Row, i)
        End If
    Next i
    
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Merci

Bonne fin de journée
 
- 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
162
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…