VBA
je suis en train de développer un outil pour générer des commandes passé par les clients sur excel et j'ai une feuille dont laquelle j'affiche tout,
je voudrais donc effectuer une boucle en VBA sachant que les valeurs que je souhaite afficher et garder en même temps sont des formules inscrit en colonnes et en ligne!!!
j'ai comme champs de AH13 0 AT18 et les formules sur ces champs sont
=INDEX(Fournisseur!$C$2:$Q$200;Fournisseur!$A$2;1)
=INDEX(Fournisseur!$C$2:$Q$200;Fournisseur!$A$2;2)
=INDEX(Fournisseur!$C$2:$Q$200;Fournisseur!$A$2;3)
=INDEX(Fournisseur!$C$2:$Q$200;Fournisseur!$A$2;4)
=INDEX(Fournisseur!$C$2:$Q$200;Fournisseur!$A$2;5)
je veux en fait au lieu de metre tout les formules dans vba, effectuer directement une boucle dont il pourra lire tout ce valeurs, aurait-il qlqn pour m'aider???
config>Windows / Chrome 46.0.2486.0</config>
31 réponses
Le sujet porte sur une boucle VBA visant à lire et afficher des valeurs issues de formules placées en lignes et colonnes spécifiques sans tout coder en dur. La solution efficace consiste à écrire directement les formules dans les plages cibles via une macro utilisant FormulaR1C1 (par exemple AR13:BD13, AR14:BD14, etc.), afin d’obtenir les résultats dynamiquement. Des erreurs fréquentes concernent le nom de la feuille (espace éventuel ou orthographe) et l’absence d’un avertisseur de comparaison ; il faut aligner le nom exact et ajouter Option Compare Text en tête du module. Après correction du nom de la feuille et de la directive, la macro fonctionne et fournit les mêmes résultats que l’approche manuelle.
-
Bonjour,
j'aimerais rester en contact avec vous, si c'est possible, je souhaite en fait vous suivre et être enseigné par vous, je voudrais élargir, comprendre et approfondir mes connaissances dans la programmation, merci.
cldt-
Bonsoir
Je ne suis pas enseignant, et n'ai sûrement pas la prétention de pouvoir former qui que ce soit. Mais pour approfondir vos connaissances, il y a plusieurs façons de procéder. Il existe une grande quantité de livres traitant le sujet, des sites internet, des formations personnalisées, des forums comme CCM où des gens de bonnes volontés et très compétents sont prêts à vous donner un coup de main. Amusez-vous à faire des manipulations sur une feuille Excel en utilisant l'enregistreur de macro, puis allez sur la page de code (avec les touches ALT + F11) et essayez de comprendre ce qui à été enregistré. Faites des modifications et observez? servez-vous de l'aide en ligne. Si vous butez sur le sens d'une instruction, positionnez-vous sur le terme en question et appuyez sur la touche F1, une fenêtre s'ouvrira donnant toutes les explications avec des exemples à l'appui. Soyez curieux, regardez les demandes des autres personnes sur ce forum, essayez de résoudre leurs problèmes et analysez les réponses qui leurs sont faites. De toute évidence, il faut du temps, mais si vous êtes passionné et suivez les quelques conseils que je vous ai donné, vous évoluerez rapidement. Courage.
Cordialement
-
-
J'ai toujours un Bugue Mr, j'ai bien rejoué cette ligne mais ça marche toujours pas en fait, Vu que la ligne n'a pas changé par rapport à la version précédente, j'en conclu que vous avez renommé la feuille "Trame commande " en "Trame commande" (suppression de l'espace en trop après le mot commande). Dans ce cas je ne vois pas où est l'erreur.
Si il y a un blocage , il faut me dire à quel endroit et me donner la ligne en défaut, parce que chez moi cela se passe bien, l'ai pas de soucis. -
2 erreurs détectées
1) ajouter en toute première ligne (tout en haut) du module la ligne suivante
Option Compare Text
2)Votre feuille s'appelle "Trame commande " il y a un espace après commande, soit vous supprimez l'espace ou bien vous le rajouté dans la ligne de commande.-
J'ai toujours un Bugue Mr, j'ai bien rejoué cette ligne mais ça marche toujours pas en fait,
voici le programme:
Option Compare Text
Option Explicit
Const Col_destinataire = 34
Const Col_contact = 34
Const Col_Designation = 6
Const col_PrixHT = 31
Dim Lig_contact
Dim Lig_Designation
Dim Lig_PrixHT
Dim Lig_destinataire
Dim i
Sub Macro1()
'Creation du fichier Excel de la commande
Dim ligne As Integer 'numero de la ligne non vide en début de macro
Dim num_commande_old As Integer 'numero de la derniere commande
Dim num_commande_new As Integer 'numero de la nouvelle commande
Dim annee_en_cours As Integer 'année en cours
Dim nom_commande As String 'nom de la commande = PM-anneeencours-num_commande_new
Dim date_commande As Date 'date de la commande
Dim fournisseur As String 'nom du fournisseur
Dim montant_HT As Double 'montant HT
Dim montant_TTC As Double 'montant TTC
Dim objWorkbookCible As Workbook
Dim objworkbooksource As Workbook
'selection de l'onglet
Sheets("commandes").Select
'selection de la derniere ligne non vide dans colonne A, recherche du bas vers le haut
Range("A" & Rows.Count).End(xlUp).Select
'numero de la ligne non vide en début de macro
ligne = ActiveCell.Row
'numero de la derniere commande
num_commande_old = ActiveCell.Value
' numero de la nouvelle commande
num_commande_new = num_commande_old + 1
'inscription du nouveau numero de commande dans la liste
Range("A" & (ligne + 1)).Value = num_commande_new
'année en cours
annee_en_cours = Year(Date)
'nom de la commande
nom_commande = ("PM_" & CStr(annee_en_cours) & "_" & CStr(num_commande_new))
'selection de l'onglet
Sheets("trame commande").Select
'inscrit le numero de la commande sur la commande
Range("G22:N22").Value = nom_commande
'copie des infos d'une feuille vers l'autre
' Worksheets("commandes").Range("I" & (ligne + 1)).Value = Worksheets("trame commande").Range("AX24:BD24").Value 'date de la commande
'nom du fournisseur
Worksheets("commandes").Range("B" & (ligne + 1)).Value = Worksheets("trame commande").Range("AR13:BN13").Value
' TOTAL HT
Worksheets("commandes").Range("C" & (ligne + 1)).Value = Worksheets("trame commande").Range("AS66:AZ67").Value
' Worksheets("commandes").Range("H" & (ligne + 1)).Value = Worksheets("trame commande").Range("AS72:AZ73").Value ' Montant TTC
' copie de formules de trame commande de ligne F28-BA55
'réation du fichier excel de la commande
Set objworkbooksource = ActiveWorkbook
Worksheets(1).Copy
Set objWorkbookCible = ActiveWorkbook
'change le nom de l'onglet
Sheets(1).Name = nom_commande
Sheets(1).Cells.Copy
Sheets(1).Cells.PasteSpecial Paste:=xlPasteValues
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'active la protection
'ActiveWorkbook.SaveAs Filename:="T:\Vincent\document\" & nom_commande & "test.xls" 'sauvegarde de la commande - modifier le chemin
Suite:
'efface les données de la trame commande
Windows("COMMANDE-OUTIL-MANUELTemo.xlsm").Activate
Worksheets("trame commande").Activate
'efface le numero de la commande
Range("G22:N22").Value = ""
'efface la référence commande
Range("G24:N24").Value = ""
'Effacer la quantité
Range("AL28:AN55").Value = ""
'effacer date
Range("AR24:BB24").Value = ""
Sheets("Fournisseur").[S1] = Sheets("Fournisseur").[C2]
Sheets("Trame commande").[B28:B55] = Sheets("Trame commande").[AL55]
ActiveWorkbook.Save
ActiveWorkbook.Close
ActiveSheet.Unprotect 'desactive la protection
For i = 1 To 1000 'Supprime les boutons
On Error Resume Next
ActiveSheet.Shapes.Range(Array("Picture 1" & i)).Select
If Err.Number = 0 Then
Selection.Delete
GoTo Suite
End If
On Error GoTo 0
Next i
End Sub
cldt
-
-
Voilà
https://www.cjoint.com/c/FEyiUMZODck
Dommage que votre tableau soit rempli de cellules fusionnées, on aurait fait plus court.
Cdlt -
-
-
@MANUELTTemoVous pouvez m'envoyer votre fichier?
Merci -
-
-
Bonjour
Sheets("Fournisseur").[A3] = 1
Mais dans votre macro il faut mettre cette ligne avantActiveWorkbook.Save ActiveWorkbook.Close
Pour ce qui est de vider les feuilles à la fermeture, rajouter ceci. A adapter à votre convenanceSub Auto_Close() Application.ScreenUpdating = False 'on efface le contenu de la feuille "Fournisseurs" Sheets("Fournisseur").Select Range("M3:R10000").ClearContents 'on efface le contenu de la feuille "Filtre" Sheets("Filtre").Select Range("A3:G10000").ClearContents 'On sélectionne la feuille "Trame commande" pour qu'on arrive sur cette feuille à l'ouverture du fichier Sheets("Trame commande").Select ActiveWorkbook.Save End Sub
Vous pouvez inclure toutes les lignes suivantes de votre macro dans celle ci-dessus'efface les données de la trame commande Windows("COMMANDE-OUTIL.xlsm").Activate Worksheets("trame commande").Activate Range("G22:N22").Value = "" 'efface le numero de la commande Range("G24:N24").Value = "" 'efface la référence commande Range("AL28:AN55").Value = "" 'Effacer la quantité Range("AR24:BB24").Value = "" 'effacer date Sheets("Fournisseur").[A3] = 1
Cdlt-
ça marche très bien merci Mr!!
Maintenant je souhaite en fait faire une copie de toutes mes formules de ligne F28-AK55, AO28-AR55 et BA28-BN55 de la trame commande.
Le but en fait c'est de copier les formules si au fur à et mesure j'ai pas une référence et que je souhaite taper directement sur ma cellule et que j'écrase les formules inscris sr ces champs et puis générer ma commande.
quand je veux rouvrir mon fichier que la macro générer la commande puisse remettre les formules dans les bone endroit et pour cela j'ai rajouté ceci dans ma macro après la ligne Worksheets("commandes").Range("C" & (ligne + 1)).Value = Worksheets("trame commande").Range("AS66:AZ67").Value:
' copie de formules de trame commande de ligne F28-BA55
Sheets("Trame commande").[F28:AK28] = Sheets("Trame commande").[=SI($B$28="";"";RECHERCHEV($B$28;Filtre!$A$3:$G8;4;0)]
Sheets("Trame commande").[F31:AK31] = Sheets("Trame commande").[=SI($B$31="";"";RECHERCHEV($B$31;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F34:AK34] = Sheets("Trame commande").[=SI($B$34="";"";RECHERCHEV($B$34;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F37:AK37] = Sheets("Trame commande").[=SI($B$37="";"";RECHERCHEV($B$37;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F40:AK40] = Sheets("Trame commande").[=SI($B$40="";"";RECHERCHEV($B$40;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F43:AK43] = Sheets("Trame commande").[=SI($B$43="";"";RECHERCHEV($B$43;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F46:AK46] = Sheets("Trame commande").[=SI($B$46="";"";RECHERCHEV($B$46;Filtre!$A$3:$G8;4;0)) ]
Sheets("Trame commande").[F49:AK49] = Sheets("Trame commande").[=SI($B$49="";"";RECHERCHEV($B$49;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F52:AK52] = Sheets("Trame commande").[=SI($B$52="";"";RECHERCHEV($B$52;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[F55:AK55] = Sheets("Trame commande").[=SI($B$55="";"";RECHERCHEV($B$55;Filtre!$A$3:$G8;4;0))]
Sheets("Trame commande").[AO28:AR28] = Sheets("Trame commande").[=SI($B$28="";"";RECHERCHEV($B$28;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO31:AR31] = Sheets("Trame commande").[=SI($B$31="";"";RECHERCHEV($B$31;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO34:AR34] = Sheets("Trame commande").[=SI($B$34="";"";RECHERCHEV($B$34;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO37:AR37] = Sheets("Trame commande").[ =SI($B$37="";"";RECHERCHEV($B$37;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO40:AR40] = Sheets("Trame commande").[=SI($B$40="";"";RECHERCHEV($B$40;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO43:AR43] = Sheets("Trame commande").[=SI($B$43="";"";RECHERCHEV($B$43;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO46:AR46] = Sheets("Trame commande").[=SI($B$46="";"";RECHERCHEV($B$46;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO49:AR49] = Sheets("Trame commande").[=SI($B$49="";"";RECHERCHEV($B$49;Filtre!$A$3:$G$8;5;0)) ]
Sheets("Trame commande").[AO52:AR52] = Sheets("Trame commande").[=SI($B$52="";"";RECHERCHEV($B$52;Filtre!$A$3:$G$8;5;0))]
Sheets("Trame commande").[AO55:AR55] = Sheets("Trame commande").[=SI($B$55="";"";RECHERCHEV($B$55;Filtre!$A$3:$G$8;5;0)) ]
Sheets("Trame commande").[BA28:BN28] = Sheets("Trame commande").[=SI($B$28<>0;RECHERCHEV($B$28;Filtre!$A$3:$G$8;6;0);"")]
Sheets("Trame commande").[BA31:BN31] = Sheets("Trame commande").[=SI($B$31="";"";RECHERCHEV($B$31;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA34:BN34] = Sheets("Trame commande").[ =SI($B$34="";"";RECHERCHEV($B$34;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA37:BN37] = Sheets("Trame commande").[=SI($B$37="";"";RECHERCHEV($B$37;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA40:BN40] = Sheets("Trame commande").[=SI($B$40="";"";RECHERCHEV($B$40;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA43:BN43] = Sheets("Trame commande").[=SI($B$43="";"";RECHERCHEV($B$43;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA46:BN46] = Sheets("Trame commande").[=SI($B$46="";"";RECHERCHEV($B$46;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA49:BN49] = Sheets("Trame commande").[=SI($B$49="";"";RECHERCHEV($B$49;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA52:BN52] = Sheets("Trame commande").[=SI($B$52="";"";RECHERCHEV($B$52;Filtre!$A$3:$G$8;6;0))]
Sheets("Trame commande").[BA55:BN55] = Sheets("Trame commande").[=SI($B$55="";"";RECHERCHEV($B$55;Filtre!$A$3:$G$8;6;0))]
Et que ça marche pas, genre quand j'ouvre mon fichier, il m'affiche dans les cellules
F28-AK55, AO28-AR55 et BA28-BN55 #valeur et j'ai pas les formules.
est-ce que pourriez-vous revoir où mon problème svp!!
cldt
-
-
Vous n'avez pas suivi mes recommandations Pourquoi ne pas changer la cellule liée de la liste déroulante des entreprises?. Dans le format de contrôle indiquez une cellule liée autre que A3
Je vous renvoi le fichier, avec déplacement de la cellule liée de la liste déroulante des entreprises en S1 de Fournisseur.
Cette modification nécessite de corriger la formule "Index" qui devient
[R4].FormulaR1C1 = "=INDEX(R3C3:R" & [C10000].End(xlUp).Row & "C3,R1C19-1,0)"
https://www.cjoint.com/c/FEvqT0jHz1w
Essayez-
Oui c'est ok!! mais on a toujours pas résolu le problème de forçage de la cellule, il y en a un autre problème que je viens de constater aussi genre, si je sélectionne mon fournisseur et me remplissant mes lignes et que génère la commande, quand je vais rouvrir mon fichier il garde les données du precedent fournisseur et que je voudrais que tout sois vierge en fait!!!
cldt
-
-
-
Bonjour
Sheets("Fournisseur").[A3] = Sheets("Fournisseur").[C2] OUI
Pour le reste, pouvez-vous remettre le fichier en pièce jointe SVP? .merci-
Bonjour Mr,
Voici le lien du fichier
https://www.cjoint.com/c/FEvlH6pTy0x
Je souhaite en fait, qu'en sortant de mon fichier, que tout soit vide et quand l'ouvrant pareil, pour la partie où je viens sélectionner mes ref articles dans ma trame c'est deja ok!!.
Maintenant je veux forcer cette partie Sheets("Fournisseur").[A3] = Sheets("Fournisseur").[C2] je l'ai mit en mode commenter car j'arrive pas l'affecter.
Le problème en fait c'est que, si vous tapez un nombre quelconque dans la cellule A3, il sélectionne le fournisseur dû au nombre tapez et il me remplie la trame commande et je souhaite pas avoir un résultat comme cela, c'est pour cela que souhaite en fait la forcer à un champs vide dans ce C2 de la feuille fournisseur, merci
cldt
-
-
Bonsoir
Sheets("Fournisseur").[A3] = a
Cdlt-
-
-
Bonjour M,
Est-ce-t-il possible au lieu de faire
Dim a as string
a=""
Sheets("Fournisseur").[A3] = a
range.fournisseur"a3".value=a
Faire directement
Sheets("Fournisseur").[A3] = Sheets("Fournisseur").[C2]
????
Et j'ai aussi un probleme genre quand j'affecte sur ma macro ce que vous venez de me donner, la feuille Filtre ni Article marche plus, il filtre plus en fait!!!
cldt
-
-
Voilà
Sub Filtrage() Application.ScreenUpdating = False Set f1 = Sheets("Fournisseur") ' Activation feuille Fournisseur Set f2 = Sheets("Article") ' Activation feuille Article Set f3 = Sheets("Filtre") ' Activation feuille filtre Set f4 = Sheets("Trame commande") ' Activation feuille Trame commande f3.Range("A3:H" & [A10000].End(xlUp).Row).ClearContents f1.Select ' Sélection feuille Fournisseur [R4].FormulaR1C1 = "=INDEX(R3C3:R" & [C10000].End(xlUp).Row & "C3,R3C1,0)" 'Affectation de la formule Index permetant de filtrer le fournisseur Entreprise = f1.[R4] ' Affectation fournisseur et la cellule Sheets("Article").Select ' Sélection de la feuille article ActiveSheet.AutoFilterMode = False Rows(1).AutoFilter ' ligne 2 de la feuille article ActiveSheet.Range("A1:G" & [C10000].End(xlUp).Row).AutoFilter Field:=3, Criteria1:=Entreprise NbCol = [IV1].End(xlToLeft).Column Range("_FilterDataBase").Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy f3.Select [A2].Select ActiveSheet.Paste f1.AutoFilterMode = False f2.AutoFilterMode = False f4.Select End Sub-
-
une autre question Mr,
je voudrais forcer une valeur à 1 dans ma macro Trame commande et je vois pas quel fonction utiliser.
je voudrais en fait dire que dans la feuille fournisseur, A3=C2
j'ai essayé de procéder comme cela:
Dim a as string
a="c3"
range.fournisseur"a3".value=a
mais ça marche pas
cldt
-
-
Bonjour
Ajoutez cette ligneSheets("Article").AutoFilterMode = Falseaprès[A2].Select ActiveSheet.Paste
Question: Pourquoi commencez -vous la plupart des tableaux en ligne 3 au lieu de la ligne 2?
Cdlt-
-
@MANUELTemoRien n'empêche de vider le contenu de la zone en question en fermant le fichier à l'aide de Auto_close
Sub Auto_close
la zone a effacer
end sub -
D'accord,
Pouvez revoir les dernières lignes de ma macro svp!!
je voudrais activé et désactivé le filtre dans la feuille article genre quand je sélectionne mon fournisseur et me remplissant la feuille filtre par des données venant de la feuille article, je puisse pas voir les filtre à trainer dans ma feuille article, j'aimerais quand puisse filtrer et en voyant pas les filtre si j'ouvre la feuille article, merci
voici le lien du dernière modif
http://www.cjoint.com/c/FEuneoJJCfC
cldt
-
-
Bonjour Mr,
Est-ce que c'est-il possible d'enlever le filtre auto sur ma macro et avoir le même résultat sans efectuer aucun filtre??
j'ai pu faire quelque modif des lignes et masquer la formule index dans la feuille fournisseur!!
J'aimerais avoir le même resultat sans effectuer aucun filtre quand je seletionne mon entreprise si c'est possible, merci!!
Voici le lien
http://www.cjoint.com/c/FEujzwKUDnC
cldt -
Bonjour Mr.
Je viens de changer quelques mise en forme de ma feuille "Filtre" et selon votre macro "Module 1" je n'arrive pas à bien reprendre!!!
Des fois ça marche mais et des fois il m'affiche que des champs vides et aussi quand je sélectionne l'entreprise sur ma trame commande il fait bien le filtre auto mais le problème c'est qu'il fixe une seule entreprise, c'est à dire, quand je prends par exemple la "Mututoyo" il me remplie la feuille "Filtre" avec ses données mais quand je prends "CTTM", sur la feuille "Filtre", ça ne change pas il garde les infos de Mututoyo et aussi il filtre pas sur la feuille "Article".
J'essayer de faire des modifs sur la macro mais je n'arrive pas à avoir la solution souhaité, vous trouverez ci-dessous le lien, merci
https://www.cjoint.com/c/FErksW8ehUC
cldt -
Bonjour
Pour une question de commodité, j'ai converti le tableau de la feuille "fournisseur" en plage.
Sélectionnez simplement l'entreprise dans la feuille"Trame commande"
https://www.cjoint.com/c/FErfpK1PSnw
En espérant que cela vous convienne.
Cdlt-
je voudrais juste savoir, la fonction index que vous avez mis dans la feuille fournisseur, quelle est ça utilité? car quand je sélectionne mes fournisseurs dans la trame commande, il m'affiche #Valeur sur toutes les lignes de la société et notamment la colonne A ne pas effacer sur la feuille fournisseur!!!
-
-
-
en fait je veux qu'en choisissant une entreprise sur la trame commande, il filtre sur la feuille article les données que de cette entreprise et il prends ces données et il remplie automatiquement dans les cellules de la feuille "Filtre"
pour cela il me faut une macro dont je pourrais fusionner ces données
cld -
Bonsoir
En fait si j'ai bien compris, en choisissant une entreprise dans la feuille "Trame commande", il suffit de filtrer la feuille article avec le nom de l'entreprise comme critère de filtrage et de recopier le tout dans la feuille "Filtre". Est-ce bien cela? -
Montant de la Tva=montant HT * %TVA (par article)
Remise=Montant total HT * %remise(sur la totalité)
Total HT=Montant HT - remise (sur la totalité)
Total TTC = Montant Total HT + Montant total TVA (sur la totalité)
avec les nouvelles formulesOption Explicit Private Sub Workbook_Open() Application.ScreenUpdating = False Range("F34:AZ53").ClearContents Range("AR13:BD13").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,1)" Range("AR14:BD14").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,2)" Range("AR15:BD15").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,3)" Range("AR16:BD16").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,4)" Range("AR17:AV17").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,5)" Range("AR18:BD18").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,1)" Range("AR19:BD19").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,2)" Range("AR20:BD20").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,3)" Range("BN19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,7)" Range("BN20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,10)" Range("BN24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,13)" Range("BO19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,8)" Range("BO20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,11)" Range("BO24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,14)" Range("BP19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,9)" Range("BP20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,12)" Range("BP24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,15)" Range("F34:AK35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,2,0),"""")" Range("F36:AK37").FormulaR1C1 = "=IF(R36C2<>0,VLOOKUP(R36C2,Article!R2C1:R201C5,2,0),"""")" Range("F38:AK39").FormulaR1C1 = "=IF(R38C2<>0,VLOOKUP(R38C2,Article!R2C1:R201C5,2,0),"""")" Range("F40:AK41").FormulaR1C1 = "=IF(R40C2<>0,VLOOKUP(R40C2,Article!R2C1:R201C5,2,0),"""")" Range("F42:AK43").FormulaR1C1 = "=IF(R42C2<>0,VLOOKUP(R42C2,Article!R2C1:R201C5,2,0),"""")" Range("F44:AK45").FormulaR1C1 = "=IF(R44C2<>0,VLOOKUP(R44C2,Article!R2C1:R201C5,2,0),"""")" Range("F46:AK47").FormulaR1C1 = "=IF(R46C2<>0,VLOOKUP(R46C2,Article!R2C1:R201C5,2,0),"""")" Range("F48:AK49").FormulaR1C1 = "=IF(R48C2<>0,VLOOKUP(R48C2,Article!R2C1:R201C5,2,0),"""")" Range("F50:AK51").FormulaR1C1 = "=IF(R50C2<>0,VLOOKUP(R50C2,Article!R2C1:R201C5,2,0),"""")" Range("F52:AK53").FormulaR1C1 = "=IF(R52C2<>0,VLOOKUP(R52C2,Article!R2C1:R201C5,2,0),"""")" Range("AO34:AR35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,3,0),"""")" Range("AO36:AR37").FormulaR1C1 = "=IF(R36C2<>0,VLOOKUP(R36C2,Article!R2C1:R201C5,3,0),"""")" Range("AO38:AR39").FormulaR1C1 = "=IF(R38C2<>0,VLOOKUP(R38C2,Article!R2C1:R201C5,3,0),"""")" Range("AO40:AR41").FormulaR1C1 = "=IF(R40C2<>0,VLOOKUP(R40C2,Article!R2C1:R201C5,3,0),"""")" Range("AO42:AR43").FormulaR1C1 = "=IF(R42C2<>0,VLOOKUP(R42C2,Article!R2C1:R201C5,3,0),"""")" Range("AO44:AR45").FormulaR1C1 = "=IF(R44C2<>0,VLOOKUP(R44C2,Article!R2C1:R201C5,3,0),"""")" Range("AO46:AR47").FormulaR1C1 = "=IF(R46C2<>0,VLOOKUP(R46C2,Article!R2C1:R201C5,3,0),"""")" Range("AO48:AR49").FormulaR1C1 = "=IF(R48C2<>0,VLOOKUP(R48C2,Article!R2C1:R201C5,3,0),"""")" Range("AO50:AR51").FormulaR1C1 = "=IF(R50C2<>0,VLOOKUP(R50C2,Article!R2C1:R201C5,3,0),"""")" Range("AO52:AR53").FormulaR1C1 = "=IF(R52C2<>0,VLOOKUP(R52C2,Article!R2C1:R201C5,3,0),"""")" Range("AS34:AV35").FormulaR1C1 = "=IF(R34C41<>0,PRODUCT(R34C38,R34C41),"""")" Range("AS36:AV37").FormulaR1C1 = "=IF(R36C41<>0,PRODUCT(R36C38,R36C41),"""")" Range("AS38:AV39").FormulaR1C1 = "=IF(R38C41<>0,PRODUCT(R38C38,R38C41),"""")" Range("AS40:AV41").FormulaR1C1 = "=IF(R40C41<>0,PRODUCT(R40C38,R40C41),"""")" Range("AS42:AV43").FormulaR1C1 = "=IF(R42C41<>0,PRODUCT(R42C38,R42C41),"""")" Range("AS44:AV45").FormulaR1C1 = "=IF(R44C41<>0,PRODUCT(R44C38,R44C41),"""")" Range("AS46:AV47").FormulaR1C1 = "=IF(R46C41<>0,PRODUCT(R46C38,R46C41),"""")" Range("AS48:AV49").FormulaR1C1 = "=IF(R48C41<>0,PRODUCT(R48C38,R48C41),"""")" Range("AS50:AV51").FormulaR1C1 = "=IF(R50C41<>0,PRODUCT(R50C38,R50C41),"""")" Range("AS52:AV53").FormulaR1C1 = "=IF(R52C41<>0,PRODUCT(R52C38,R52C41),"""")" Range("AS54:AV55").FormulaR1C1 = "=SUM(R34C45:R53C48)" Range("AS58:AV58").FormulaR1C1 = "=R[-4]C*RC[4]" Range("AW34:AZ35").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*RC[4],"""")" Range("AW36:AZ37").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW38:AZ39").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW40:AZ41").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW42:AZ43").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW44:AZ45").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW46:AZ47").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW48:AZ49").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW50:AZ51").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW52:AZ53").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW54:AZ55").FormulaR1C1 = "=SUM(R34C49:R53C52)" Range("BA34:BD35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,4,0),"""")" Range("AS60:AZ61").FormulaR1C1 = "=R[-6]C-R[-2]C" Range("AS63:AZ64").FormulaR1C1 = "=R[-3]C+R[-9]C[4]" [F34].Select End Sub-
Bonjour Mr,
J'en ai encore un problème, j'aimerais en fait, créer une nouvelle macro et l'associer à ma feuille "Filtre et trame commande" ayant les fonction suivants:
- Quand je sélectionne une entreprise sur ma trame commande, automatiquement il me prends la "Réf article, catégorie, Fournisseur, Désignation, Prix HT et le % TVA" de la feuille Article et il me rempli la feuille "filtre " ayant que des articles en fonction du fournisseur choisi sur ma trame commande!!!!
voici le lien du fichier
https://www.cjoint.com/c/FEqpUeZE6Ux
j'ai les idées bien construis mais je vois pas quels fonction mettre en place pour que la macro fonctionne, pourriez-vous m'aider svp!!!
cld
-
-
Maintenant j'ai un autre probleme sur le montant de la tva je utilise cette fonction
=SI($BA$34="";"";PRODUIT(BA34;AS34))
mais il me calcul à resultat que n'à rien avoir avec les donnés, notament pour pour le calcul de la remise ainsi que TOTAL HT ET TTC, j'aimerais que vous me donniez quelques idées aussi merci!!!
cld -
A coller dans le module du classeur "ThisWorkbook"
La formule des cellules fusionnées "AS34:AV35" est différente de celles au-dessous
La formule des cellules fusionnées"AW34:AZ35" est différente de celles au-dessous
Si c'est une erreur, corrigez dans le code ci-dessous
Option Explicit Private Sub Workbook_Open() Application.ScreenUpdating = False Range("F34:AZ53").ClearContents Range("AR13:BD13").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,1)" Range("AR14:BD14").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,2)" Range("AR15:BD15").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,3)" Range("AR16:BD16").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,4)" Range("AR17:AV17").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,5)" Range("AR18:BD18").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,1)" Range("AR19:BD19").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,2)" Range("AR20:BD20").FormulaR1C1 = "=INDEX(R19C66:R24C68,Fournisseur!R2C2,3)" Range("BN19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,7)" Range("BN20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,10)" Range("BN24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,13)" Range("BO19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,8)" Range("BO20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,11)" Range("BO24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,14)" Range("BP19").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,9)" Range("BP20").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,12)" Range("BP24").FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1,15)" Range("F34:AK35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,2,0),"""")" Range("F36:AK37").FormulaR1C1 = "=IF(R36C2<>0,VLOOKUP(R36C2,Article!R2C1:R201C5,2,0),"""")" Range("F38:AK39").FormulaR1C1 = "=IF(R38C2<>0,VLOOKUP(R38C2,Article!R2C1:R201C5,2,0),"""")" Range("F40:AK41").FormulaR1C1 = "=IF(R40C2<>0,VLOOKUP(R40C2,Article!R2C1:R201C5,2,0),"""")" Range("F42:AK43").FormulaR1C1 = "=IF(R42C2<>0,VLOOKUP(R42C2,Article!R2C1:R201C5,2,0),"""")" Range("F44:AK45").FormulaR1C1 = "=IF(R44C2<>0,VLOOKUP(R44C2,Article!R2C1:R201C5,2,0),"""")" Range("F46:AK47").FormulaR1C1 = "=IF(R46C2<>0,VLOOKUP(R46C2,Article!R2C1:R201C5,2,0),"""")" Range("F48:AK49").FormulaR1C1 = "=IF(R48C2<>0,VLOOKUP(R48C2,Article!R2C1:R201C5,2,0),"""")" Range("F50:AK51").FormulaR1C1 = "=IF(R50C2<>0,VLOOKUP(R50C2,Article!R2C1:R201C5,2,0),"""")" Range("F52:AK53").FormulaR1C1 = "=IF(R52C2<>0,VLOOKUP(R52C2,Article!R2C1:R201C5,2,0),"""")" Range("AO34:AR35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,3,0),"""")" Range("AO36:AR37").FormulaR1C1 = "=IF(R36C2<>0,VLOOKUP(R36C2,Article!R2C1:R201C5,3,0),"""")" Range("AO38:AR39").FormulaR1C1 = "=IF(R38C2<>0,VLOOKUP(R38C2,Article!R2C1:R201C5,3,0),"""")" Range("AO40:AR41").FormulaR1C1 = "=IF(R40C2<>0,VLOOKUP(R40C2,Article!R2C1:R201C5,3,0),"""")" Range("AO42:AR43").FormulaR1C1 = "=IF(R42C2<>0,VLOOKUP(R42C2,Article!R2C1:R201C5,3,0),"""")" Range("AO44:AR45").FormulaR1C1 = "=IF(R44C2<>0,VLOOKUP(R44C2,Article!R2C1:R201C5,3,0),"""")" Range("AO46:AR47").FormulaR1C1 = "=IF(R46C2<>0,VLOOKUP(R46C2,Article!R2C1:R201C5,3,0),"""")" Range("AO48:AR49").FormulaR1C1 = "=IF(R48C2<>0,VLOOKUP(R48C2,Article!R2C1:R201C5,3,0),"""")" Range("AO50:AR51").FormulaR1C1 = "=IF(R50C2<>0,VLOOKUP(R50C2,Article!R2C1:R201C5,3,0),"""")" Range("AO52:AR53").FormulaR1C1 = "=IF(R52C2<>0,VLOOKUP(R52C2,Article!R2C1:R201C5,3,0),"""")" Range("AS34:AV35").FormulaR1C1 = "=IF(RC[-7]="""","""",RC[-7]*RC[-4])" Range("AS36:AV37").FormulaR1C1 = "=IF(R36C41<>0,PRODUCT(R36C38,R36C41),"""")" Range("AS38:AV39").FormulaR1C1 = "=IF(R38C41<>0,PRODUCT(R38C38,R38C41),"""")" Range("AS40:AV41").FormulaR1C1 = "=IF(R40C41<>0,PRODUCT(R40C38,R40C41),"""")" Range("AS42:AV43").FormulaR1C1 = "=IF(R42C41<>0,PRODUCT(R42C38,R42C41),"""")" Range("AS44:AV45").FormulaR1C1 = "=IF(R44C41<>0,PRODUCT(R44C38,R44C41),"""")" Range("AS46:AV47").FormulaR1C1 = "=IF(R46C41<>0,PRODUCT(R46C38,R46C41),"""")" Range("AS48:AV49").FormulaR1C1 = "=IF(R48C41<>0,PRODUCT(R48C38,R48C41),"""")" Range("AS50:AV51").FormulaR1C1 = "=IF(R50C41<>0,PRODUCT(R50C38,R50C41),"""")" Range("AS52:AV53").FormulaR1C1 = "=IF(R52C41<>0,PRODUCT(R52C38,R52C41),"""")" Range("AS54:AV55").FormulaR1C1 = "=SUM(R34C45:R53C48)" Range("AW34:AZ35").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*RC[4],"""")" Range("AW36:AZ37").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW38:AZ39").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW40:AZ41").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW42:AZ43").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW44:AZ45").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW46:AZ47").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW48:AZ49").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW50:AZ51").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW52:AZ53").FormulaR1C1 = "=IF(RC[4]<>0,RC[-4]*0.2,"""")" Range("AW54:AZ55").FormulaR1C1 = "=SUM(R34C49:R53C52)" Range("BA34:BD35").FormulaR1C1 = "=IF(R34C2<>0,VLOOKUP(R34C2,Article!R2C1:R201C5,4,0),"""")" Range("AS60:AZ61").FormulaR1C1 = "=QUOTIENT(R63C45,1.2)" Range("AS63:AZ64").FormulaR1C1 = "=QUOTIENT(R54C49,0.1666666667)" [F34].Select End SubCdlt
- 1
- 2

