excel vba copier feuille et générer liaisons

niconi0102

XLDnaute Nouveau
Bonjour à tous,

Je suis débutant en VBA et aurait besoin d'aide! Je vous explique mon problème:

J'ai un classeur excel avec une feuille intitulée "récapitulatif" et une autre "facture 1". La feuille "facture 1" est liée avec la feuille "récapitulatif". J'aurais aimé faire un code pour créer une copie de "facture 1" en générant les mêmes liaisons qui existent entre "facture 1" et "récapitulatif" pour la nouvelle feuille créée. De plus, j'aurais aimé affecté la date du jour au nom de la nouvelle feuille...
Pour créer une copie de la feuille "facture 1" en nommant cette copie avec la date du jour j'ai réussi à toruver un code qui marche. Cependant, pour les liaisons, c'est beaucoup plus compliqué...
Quelqu'un aurait-il une idée?:confused:

Je met mon fichier en PJ.

Merci d'avance!

Nico
 

Pièces jointes

  • fichier exemple.xlsm
    99.3 KB · Affichages: 74
  • fichier exemple.xlsm
    99.3 KB · Affichages: 68
  • fichier exemple.xlsm
    99.3 KB · Affichages: 68

fredl

XLDnaute Impliqué
Re : excel vba copier feuille et générer liaisons

voir macro essai :
elle actualise la liaison en B8
faire de meme pour les autres.
l'idée a été de récupérer tous les noms des onglets autre que "récapitulatif", et générer le texte ("Vliaison" dans la macro) à écrire dans la cellule. qui va bien

Dis moi si ok
Frédéric
 

Pièces jointes

  • fichier%20exemple(1).xlsm
    85.3 KB · Affichages: 82

niconi0102

XLDnaute Nouveau
Re : excel vba copier feuille et générer liaisons

Bonjour Frédéric.
Tout d'abord, merci pour ta réponse. Mais malheureusement, ça ne fonctionne pas..
Je n'arrive même pas à lire le code de la macro; il semble inexistant. Pourrais-tu m'envoyer le code?

Merci!

Nico
 

fredl

XLDnaute Impliqué
Re : excel vba copier feuille et générer liaisons

Sub essai()
Dim Vliaison as string
Vliaison = "="
'construction du texte 'liaison'
For Each Sheet In Sheets
If Sheet.Name <> "Récapitulatif" Then
Vliaison = Vliaison & "SUMIF('" & Sheet.Name & "'!R28C1:R42C1,'" & Sheet.Name & "'!R[-5]C[6],'" & Sheet.Name & "'!R28C4:R42C4)+"
End If
Next
'enlever le + en trop à la fin
Vliaison = Left(Vliaison, Len(Vliaison) - 1)
'mettre le texte Vliaison en B8
Sheets("Récapitulatif").Select
Range("B8").Value = Vliaison
End Sub


Dis moi!
Frédéric
 

niconi0102

XLDnaute Nouveau
Re : excel vba copier feuille et générer liaisons

Bonjour Frédéric,

Merci beaucoup pour ton aide encore une fois. J'ai essayé avec le code mais ça ne fonctionne toujours pas..
Le message d'erreur affiche : La méthode "value" de l'objet "range" a échouée.

J'ai essayé de comprendre le code et je commence à saisir certaines choses. Je suis en train d'essayer de le faire marcher mais bon, j'ai beaucoup de mal bien évidemment.

Nico
 

fredl

XLDnaute Impliqué
Re : excel vba copier feuille et générer liaisons

Je viens de te remettre la macro dans le fichier qui s'appelle maintenant 'actualiser'
J'ai supprimé la formule en récapitulatif /B8
Lance la par le vba en mode pas à pas (alt f11/module1 tu te met dans la macro et tu fais F8 = mode 'pas à pas')
et tu comprendra mieux ce qu'il fait
Au final, la formule sera mise en B8
Frédéric
 

Pièces jointes

  • fichierExemple(1).xls
    764.5 KB · Affichages: 110

niconi0102

XLDnaute Nouveau
Re : excel vba copier feuille et générer liaisons

En fait c'est bon ça marche!
J'ai fait 2 changement sur le code :
Sub liaisonsnvellefacture()
'
' liaisonsnvellefacture Macro

Dim Vliaison As String
'Vliaison = "="
'construction du texte 'liaison'
For Each Sheet In Sheets
If Sheet.Name <> "Récapitulatif" Then
Vliaison = "=" & "SUMIF('" & Sheet.Name & "'!R28C1:R42C1,'" & Sheet.Name & "'!R[-5]C[6],'" & Sheet.Name & "'!R28C4:R42C4)"
End If
Next
'Vliaison = Left(Vliaison, Len(Vliaison) - 1)
'mettre le texte Vliaison en B8
Sheets("Récapitulatif").Select
Range("B8").Value = Vliaison

End Sub

J'ai mis en commentaire 2 lignes et ça fonctionne (ligne 6 et 13).

Je vais cependant regarder ce que tu m'a envoyé aujourd'hui! Merci beaucoup en tous cas, sans toi j'y aurais passé mon année!
J'ai quand même une question. Comme j'ai dis, j'ai oté deux ligne du code. Je ne comprend pas la ligne 13 ou tu utilise la fonction Len...
Pourrais-tu me dire à quoi cela servait... (c'est uniquement par curiosité)

encore une fois merci énormément.

Nico
 

fredl

XLDnaute Impliqué
Re : excel vba copier feuille et générer liaisons

la fonction len compte le nb de caractère d'une chaine
ex len("toto+")=5
moi je voulais enlever le + en fin de chaine donc :
Left(TOTO+, Len(TOTO+) - 1)="TOTO"

je parts en vacance pour une semaine now!
content de t'avoir aidé.
n'hésite pas!
Frederic
 

Discussions similaires

Réponses
2
Affichages
228

Statistiques des forums

Discussions
312 182
Messages
2 086 004
Membres
103 085
dernier inscrit
ACHIKLLLE