Microsoft 365 Liaisons externes par macro

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Me voilà avec un nouveau souci que je ne parviens pas à résoudre Grrr !!! :mad:
J'ai cherché sur le net et dans le Forum, sauf mauvaises recherches, je n'ai pas trouvé.

J'ai dans mon classeur beaucoup de formules qui sont des liaisons externes.
Mes formules fonctionnent bien.

Pour alléger mes fichiers, je préfère toujours coder mes formules et ne copier que les valeurs.
J'ai ce code :
VB:
Sub MaJ_Clients() 'Fichier Facturation
Application.EnableEvents = False
Application.ScreenUpdating = False
'Application.Calculation = xlCalculationManual
'ActiveSheet.Unprotect Password:=""
    [A2] = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!R1C1,"" "",1,1,1),"""")"
    [B2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC2"
    [C2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC3"
    [D2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC4"
    [E2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC5"
    [F2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC17"
    [G2] = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC25"
    [I2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC12"
    [J2] = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC13"
    [L2] = "=IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC6-RC[-1],0)"
    Rows("2:2").Copy
    Rows("3:101").Select
    ActiveSheet.Paste
    Rows("2:101").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    end sub
Mon code ne fonctionne pas, je n'ai pas mes valeurs de liaisons.
Pourtant, j'ai bien vérifié et le code correspond bien à mes formules d'origine.

Je n'y comprends rien !
Auriez-vous une idée ?

Il m'est difficile et long de préparer un fichier test. Mais si c'est nécessaire, je le ferai.
Je vous remercie,
Amicalement,
lionel :)
 
Solution
Mon nouveau code avec les bons fichiers et la nouvelle formule en colonne L :
VB:
Sub MaJ_Clients() 'Fichier Facturation
Dim f$
Application.ScreenUpdating = False
Application.EnableEvents = False

f = "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!"
    [A2:A101] = "=IF(B2<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
    [B2:E101] = "=" & f & "B2"
    [F2:F101] = "=" & f & "Q2"
    [G2:G101] = "=IF(D2="""","""",IF(" & f & "J2=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2:H101] = "=" & f & "Y2"
    [I2:J101] = "=" & f & "L2"
    [L2:L101] = "=IF(M2=""fini"",0,IF(I2<>0," & f & "F2-K2,0))"
    [M2:M101] = "=IF(I2<>0," & f & "N2,"""")"
    [A2:M101]...

dysorthographie

XLDnaute Accro
😅Vous avez raison c'est vachement compliqué!😂

il ne nous incombe pas de modifier tout le code mais nous pouvons donner des piste pour aider Usine à gaz pour les effectuer lui même!

Edite désolé job75 j'avais pas vue!
VB:
[A2:A101].FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!R1C1,"" "",1,1,1),"""")"

    [B2:B101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC2"

    [C2:C101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC3"

    [D2:D101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC4"

    [E2:E101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC5"

    [F2:F101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC17"

    [G2:G101].FormulaR1C1 = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"

    [H2:H101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC25"

    [I2:I101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC12"

    [J2:J101].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC13"

    [L2:L101].FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC6-RC[-1],0))"

    [M2:M101].FormulaR1C1 = "=IF(RC[-4]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC14,"""")"

[A2:M101].value=[A2:M101].value
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Ca a l'air d'être 4 fois la même chose, donc est-ce qu'on ne pourrait pas utiliser une boucle genre :

VB:
Sub MaJ_Clients() 'Fichier Facturation
'
Dim f$, i as Long

    Application.ScreenUpdating = False
    Application.EnableEvents = False

    f = "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!"

    For 1 = 0 To 3
        [A2:A101].Offset(100 * i) = "=IF(B2<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
        [B2:E101].Offset(100 * i) = "=" & f & "B2"
        [F2:F101].Offset(100 * i) = "=" & f & "Q2"
        [G2:G101].Offset(100 * i) = "=IF(D2="""","""",IF(" & f & "J2=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
        [H2:H101].Offset(100 * i) = "=" & f & "Y2"
        [I2:J101].Offset(100 * i) = "=" & f & "L2"
        [L2:L101].Offset(100 * i) = "=IF(M2=""fini"",0,IF(I2<>0,F2-K2,0))"
        [M2:M101].Offset(100 * i) = "=IF(I2<>0," & f & "N2,"""")"
        [A2:M101].Offset(100 * i) = [A2:M101].Offset(100 * i).Value 'supprime les formules
    Next i

    Application.EnableEvents = True

End Sub


[edit]
Le message précédent ayant disparu, mon message ne tient plus la route...
[/edit]
 
Dernière édition:

job75

XLDnaute Barbatruc
Peut-être est-il possible de simplifier le code ?
C'est plus simple en notation A1 mais il faut faire très attention, j'espère que ceci est correct :
VB:
Sub MaJ_Clients() 'Fichier Facturation
Dim f$
Application.ScreenUpdating = False
Application.EnableEvents = False
f = "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!"

    [A2:A101] = "=IF(B2<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
    [B2:E101] = "=" & f & "B2"
    [F2:F101] = "=" & f & "Q2"
    [G2:G101] = "=IF(D2="""","""",IF(" & f & "J2=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2:H101] = "=" & f & "Y2"
    [I2:J101] = "=" & f & "L2"
    [L2:L101] = "=IF(M2=""fini"",0,IF(I2<>0," & f & "F2-K2,0))"
    [M2:M101] = "=IF(I2<>0," & f & "N2,"""")"
    [A2:M101] = [A2:M101].Value 'supprime les formules

    [A102:A201] = "=IF(B102<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
    [B102:E201] = "=" & f & "B2"
    [F102:F201] = "=" & f & "Q2"
    [G102:G201] = "=IF(D102="""","""",IF(" & f & "J2=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H102:H201] = "=" & f & "Y2"
    [I102:J201] = "=" & f & "L2"
    [L102:L201] = "=IF(M102=""fini"",0,IF(I102<>0," & f & "F102-K102,0))"
    [M102:M201] = "=IF(I102<>0," & f & "N2,"""")"
    [A102:M201] = [A102:M201].Value 'supprime les formules

    [A202:A301] = "=IF(B202<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
    [B202:E301] = "=" & f & "B2"
    [F202:F301] = "=" & f & "Q2"
    [G202:G301] = "=IF(D202="""","""",IF(" & f & "J102=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H202:H301] = "=" & f & "Y2"
    [I202:J301] = "=" & f & "L2"
    [L202:L301] = "=IF(M202=""fini"",0,IF(I202<>0," & f & "F202-K202,0))"
    [M202:M301] = "=IF(I202<>0," & f & "N2,"""")"
    [A202:M301] = [A202:M301].Value 'supprime les formules
   
    [A302:A401] = "=IF(B302<>0,TEXTBEFORE(" & f & "A$1,"" "",1,1,1),"""")"
    [B302:E401] = "=" & f & "B2"
    [F302:F401] = "=" & f & "Q2"
    [G302:G401] = "=IF(D302="""","""",IF(" & f & "J202=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H302:H401] = "=" & f & "Y2"
    [I302:J401] = "=" & f & "L2"
    [L302:L401] = "=IF(M302=""fini"",0,IF(I302<>0," & f & "F302-K302,0))"
    [M302:M401] = "=IF(I302<>0," & f & "N2,"""")"
    [A302:M401] = [A302:M401].Value 'supprime les formules
   
Application.EnableEvents = True
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gérard,
Je te remercie pour ton code.
Je suis en train de tester, Le code fonctionne mais il me donne 4 fois les information de facturation de la 1ère commerciale.

Je crois que le souci est le suivant
Selon le code de mon #Post 13 qui fonctionne, voici les 1ères ligne de chaque Commerciale :

En recopie des ligne, Données'!RC augmente à chaque ligne copiée

- copie 1 qui commence ligne 2 - on est à Données'!RC2
[B2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC2"

- copie 2 qui commence ligne 102 - on est à Données'!R[-100]C2 pour rétablissement à Données'!RC2
[B102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C2"
Il faut également remplacer Charlotte de la copie 1 par Imen

- copie 3 qui commence ligne 202 - on est à Données'!R[-200]C2 pour rétablissement à Données'!RC2
[B202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C2"
Il faut également remplacer Charlotte de la copie 1 par Sonda

- copie 4 qui commence ligne 302 - on est à Données'!R[-300]C2 pour rétablissement à Données'!RC2
[B302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C2"
Il faut également remplacer Charlotte de la copie 1 par Stephanie

OUI, c'est pas évident sans les fichiers tests qu'il m'est difficile de faire et il me faut du temps ... Peut-être pourrais-je ce WE.

En tout cas, ton code est bien mieux que le mien (évidemment lol) :)
J'espère m'être bien expliqué,
lionel :)
 

TooFatBoy

XLDnaute Barbatruc
Je te propose ceci :
VB:
Sub Copiages()
'
    Call Copiage(0, "'C:\UnDossierPourYoyo\[Charlotte.xlsx]Feuil1'!")
    Call Copiage(100, "'C:\UnDossierPourYoyo\[Imen.xlsx]Feuil1'!")
    Call Copiage(200, "'C:\UnDossierPourYoyo\[Sonda.xlsx]Feuil1'!")
    Call Copiage(300, "'C:\UnDossierPourYoyo\[Stephanie.xlsx]Feuil1'!")

'    Call Copiage(0, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!")
'    Call Copiage(100, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!")
'    Call Copiage(200, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!")
'    Call Copiage(300, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!")

End Sub

Sub Copiage(MonDecalage As Variant, FichierSource As String)
'
    Application.ScreenUpdating = False

    [A2:A101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE(" & FichierSource & "R1C1,"" "",1,1,1),"""")"
    [B2:B101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C2"
    [C2:C101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C3"
    [D2:D101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C4"
    [E2:E101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C5"
    [F2:F101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C17"
    [G2:G101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[-3]="""","""",IF(" & FichierSource & "R[" & -MonDecalage & "]C10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2:H101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C25"
    [I2:I101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C12"
    [J2:J101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C13"
    [L2:L101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0," & FichierSource & "RC6-RC[-1],0))"
    [M2:M101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[-4]<>0," & FichierSource & "R[" & -MonDecalage & "]C14,"""")"

    With Range("A2:M101").Offset(MonDecalage)
        .Value = .Value
    End With

End Sub

Pour tester le bon adressage des fichiers et de leurs cellules :
- tu mets Yoyo.xlsm où tu veux,
- tu crées un dossier "C:\UnDossierPourYoyo\" et tu y glisses les 4 autres fichiers.

Pour tester avec tes fichiers :
- dans la macro Copiages tu mets en commentaire les 4 lignes actuellement actives, et tu actives les 4 lignes actuellement en commentaire.


ps : je reste persuadé (jusqu'à preuve du contraire 😁) qu'il y a un problème dans la formule de la colonne "L".
 

Pièces jointes

  • Charlotte.xlsx
    29.4 KB · Affichages: 2
  • Imen.xlsx
    29.3 KB · Affichages: 2
  • Sonda.xlsx
    29.3 KB · Affichages: 2
  • Stephanie.xlsx
    29.5 KB · Affichages: 2
  • Yoyo.xlsm
    16.1 KB · Affichages: 2
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard :)
Bonjour TooFatBoy :)

Vraiment merci à vous :)
@ TooFatBoy : Merci aussi pour ton travail et tu m'as permis de trouver une erreur :
"je reste persuadé (jusqu'à preuve du contraire 😁) qu'il y a un problème dans la formule de la colonne "L"
Effectivement, il y avait une erreur et j'ai pu rectifier :
VB:
Sub MaJ_Clients() 'Fichier Facturation
Sheets("Clients").Select
Application.EnableEvents = False
Application.ScreenUpdating = False
'Application.Calculation = xlCalculationManual
'ActiveSheet.Unprotect Password:=""
    [A2].FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!R1C1,"" "",1,1,1),0)"
    [B2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC2"
    [C2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC3"
    [D2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC4"
    [E2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC5"
    [F2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC17"
    [G2].FormulaR1C1 = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC25"
    [I2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC12"
    [J2].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC13"
    [L2].FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC6-RC[-1],0))"
    [M2].FormulaR1C1 = "=IF(RC[-4]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!RC14,"""")"
    Rows("2:2").Copy
    Rows("3:101").Select
    ActiveSheet.Paste
    Rows("2:101").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    [A102].Select
    [A102].FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R1C1,"" "",1,1,1),0)"
    [B102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C2"
    [C102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C3"
    [D102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C4"
    [E102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C5"
    [F102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C17"
    [G102].FormulaR1C1 = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C25"
    [I102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C12"
    [J102].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C13"
    [L102].FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C6-RC[-1],0))"
    [M102].FormulaR1C1 = "=IF(RC[-4]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-100]C14,"""")"
    Rows("102:102").Copy
    Rows("103:201").Select
    ActiveSheet.Paste
    Rows("102:201").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    [A202].Select
    [A202].FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R1C1,"" "",1,1,1),0)"
    [B202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C2"
    [C202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C3"
    [D202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C4"
    [E202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C5"
    [F202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C17"
    [G202].FormulaR1C1 = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-100]C10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C25"
    [I202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C12"
    [J202].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C13"
    [L202].FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C6-RC[-1],0))"
    [M202].FormulaR1C1 = "=IF(RC[-4]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!R[-200]C14,"""")"
    Rows("202:202").Copy
    Rows("203:301").Select
    ActiveSheet.Paste
    Rows("202:301").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    [A302].Select
    [A302].FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R1C1,"" "",1,1,1),0)"
    [B302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C2"
    [C302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C3"
    [D302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C4"
    [E302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C5"
    [F302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C17"
    [G302].FormulaR1C1 = "=IF(RC[-3]="""","""",IF('C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-100]C10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C25"
    [I302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C12"
    [J302].FormulaR1C1 = "='C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C13"
    [L302].FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!R[-300]C6-RC[-1],0))"
    [M302].FormulaR1C1 = "=IF(RC[-4]<>0,'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!R[-300]C14,"""")"
    Rows("302:302").Copy
    Rows("303:401").Select
    ActiveSheet.Paste
    Rows("302:401").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    With ActiveSheet 'Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("2:" & .Range("a65536").End(xlUp).Row)
        If .Row < 2 Then Exit Sub 'sécurité
        .Sort .Columns(1), xlDescending, Header:=xlNo
    End With
    End With

    Rows("2:401").Select
    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

    Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

    With ActiveSheet 'Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("2:" & .Range("a65536").End(xlUp).Row)
        If .Row < 2 Then Exit Sub 'sécurité
        .Sort .Columns(2), xlAscending, Header:=xlNo
    End With
    End With
    
    [I1].FormulaR1C1 = "=""RdVs Acht ""&SUM(R[1]C:R[999]C)"
    [J1].FormulaR1C1 = "=""RdVs Fact ""&SUM(R[1]C:R[999]C)"
    [K1].FormulaR1C1 = "=""RdVsNF ""&SUM(R[1]C:R[999]C)"
    [L1].FormulaR1C1 = "=""RdVs solde ""&SUM(R[1]C:R[999]C)"
    
    [A1].Select
'Application.CutCopyMode = False
'ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
Application.ScreenUpdating = True
'Application.Calculation = xlCalculationAutomatic
End Sub
Code "non simplifié" mais qui fonctionne bien,

Encore merci à vous deux :)
lionel :)
 

TooFatBoy

XLDnaute Barbatruc
@ @TooFatBoy : Merci aussi pour ton travail et tu m'as permis de trouver une erreur :
"je reste persuadé (jusqu'à preuve du contraire 😁) qu'il y a un problème dans la formule de la colonne "L"
Effectivement, il y avait une erreur et j'ai pu rectifier

Du coup, je modifie ma réponse de #25 comme ceci :
VB:
Sub Copiages()
'
    Call Copiage(0, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Charlotte.xlsm]Données'!")
    Call Copiage(100, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Imen.xlsm]Données'!")
    Call Copiage(200, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Sonda.xlsm]Données'!")
    Call Copiage(300, "'C:\Users\lionel\Desktop\Dossier isiTel\01 ImmobRdV NF\[isitelFacturation Stephanie.xlsm]Données'!")

End Sub

Sub Copiage(MonDecalage As Variant, FichierSource As String)
'
    Application.ScreenUpdating = False

    [A2:A101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[1]<>0,TEXTBEFORE(" & FichierSource & "R1C1,"" "",1,1,1),"""")"
    [B2:B101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C2"
    [C2:C101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C3"
    [D2:D101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C4"
    [E2:E101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C5"
    [F2:F101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C17"
    [G2:G101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[-3]="""","""",IF(" & FichierSource & "R[" & -MonDecalage & "]C10=""Vendeur préparé au mandat sans garantie de signature"",""Prépa"",""NP""))"
    [H2:H101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C25"
    [I2:I101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C12"
    [J2:J101].Offset(MonDecalage).FormulaR1C1 = "=" & FichierSource & "R[" & -MonDecalage & "]C13"
    [L2:L101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[1]=""fini"",0,IF(RC[-3]<>0," & FichierSource & "R[" & -MonDecalage & "]C6-RC[-1],0))"
    [M2:M101].Offset(MonDecalage).FormulaR1C1 = "=IF(RC[-4]<>0," & FichierSource & "R[" & -MonDecalage & "]C14,"""")"

    With Range("A2:M101").Offset(MonDecalage)
        .Value = .Value
    End With

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 840
dernier inscrit
blaise09