VBA

Fermé
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016 - 27 avril 2016 à 11:14
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 30 mai 2016 à 20:25
Bonjour,
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

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
1
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
27 avril 2016 à 15:59
Bonjour
Une proposition à adapter
Sub RecopieFormule()
    Application.ScreenUpdating = False
    For i = 13 To 18 'de la ligne 13 à 18
        For j = 34 To 46 'de la colonne AH à AT
            Col = Col + 1
            Cells(i, j).FormulaR1C1 = "=INDEX(Fournisseur!R2C3:R200C17,Fournisseur!R2C1," & Col & ")"
        Next j
    Next
End Sub

Cdlt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
27 avril 2016 à 16:13
Merci pour ta preposition

mais par contre je vois pas ce que vous appelez de R1 et 2!!!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
27 avril 2016 à 16:23
c'est votre formule recopiée en VBA
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
27 avril 2016 à 16:24
hmmmm ok merci je vais essayer si ça marche!!
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
Modifié par MANUELTemo le 28/04/2016 à 12:20
Bonjour Frenchie83

je viens de tapper sur VBA et ça marche maintenant je suis en train d'essayer avec les autres champs et ça Bugue tout le temps, voici les boucles.

=INDEX($BD$19:$BF$21;Fournisseur!$B$2;1)
=INDEX($BD$19:$BF$21;Fournisseur!$B$2;2)
=INDEX($BD$19:$BF$21;Fournisseur!$B$2;3)

Const Col_contact = 34
Dim Lig_contact

For Lig_contact = 18 To 20 'INDEX($BD$19:$BF$21;Fournisseur!$B$2;1)
Cells(Lig_contact, Col_contact).FormulaR1BD1 = "=INDEX(Trame commande!R2C3:R19C21,Fournisseur!R2C1)"

Next
_______________________________________________
=RECHERCHEV($B$27;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$29;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$31;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$33;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$35;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$37;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$39;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$41;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$43;Article!$A$2:$F$201;2;0)
=RECHERCHEV($B$45;Article!$A$2:$F$201;2;0)


Const Col_Designation = 6
Dim Lig_Designation

For Lig_Designation = 27 To 46 'RECHERCHEV($B$27;Article!$3:$F$201;3;0)
Cells(Lig_Designation, Col_Designation).FormulaR1C1 = "=RECHERCHEV(Trame commande!R2C3:R201C46,Article!R2C0)"
Next

j'arrive pas à voir où est mon erreur si je bien fait comme tu l'as fait!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
28 avril 2016 à 13:37
Bonjour
D'abord dans la 1ère boucle: pourquoi 18 à 20 alors que dans la formule en remarque c'est de 19 à 21 ?
For Lig_contact = 18 To 20 'INDEX($BD$19:$BF$21;Fournisseur!$B$2;1)
Cells(Lig_contact, Col_contact).FormulaR1BD1= "=INDEX(Trame commande!R2C3:R19C21,Fournisseur!R2C1 et quelle colonne?)"
    For Lig_contact = 18 To 20 'INDEX($BD$19:$BF$21;Fournisseur!$B$2;1)
        Col = Col + 1
        Cells(Lig_contact, Col_contact).FormulaR1C1 = "=INDEX(Trame commande!R2C3:R19C21,Fournisseur!R2C1," & Col & ")"
    Next

Dans la 2ème boucle
    Const Col_Designation = 6
    Dim Lig_Designation
    Lig = 27
    For Lig_Designation = 27 To 46 'RECHERCHEV($B$27;Article!$3:$F$201;3;0)
        Cells(Lig_Designation, Col_Designation).FormulaR1C1 = "=VLOOKUP('Trame commande'!R" & Lig & "C2,Article!R2C1:R201C6,2,0)"
        Lig = Lig + 2
    Next

Cdlt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 09:16
Les deux dernières codes je les tape mais ça marche pas en fait, y a tjs un Bugue!!!!!
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 09:18
Et pour la premiere j'aimerais bien qu'il m'affiche pas #NA
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
29 avril 2016 à 10:18
Bonjour
y a tjs un Bugue!!!!! Oui, mais sur quelle ligne?
j'aimerais bien qu'il m'affiche pas #NA, il faut traiter la condition =SI.NA(Formule; action à faire ; Formule)

Pour gagner du temps, pourriez-vous mettre votre fichier en pièce jointe(sans données sensibles, ni personnelles)?
Pour déposer un fichier en pièce jointe
aller sur "www.cjoint.com"
-clic sur "parcourir"
-sélectionnez le fichier à envoyer
-clic sur "créer le lien Cjoint" (bouton en bas)
-clic droit sur le lien proposé, et sélectionnez "copier l'adresse du lien"
-sur votre nouvelle demande CCM, -clic droit coller
Cdlt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 11:06
j'arrive pas avoir le lien dont vous parlez à part ça la sur la cage

Pour utiliser ce service, il faut tout de même avoir quelque chose à mettre en lien ;-)

cld
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 11:17
Pour utiliser ce service, il faut tout de même avoir quelque chose à mettre en lien Oui, votre fichier, et c'est Cjoint.com qui va créer le lien.
Je répète
Pour déposer un fichier en pièce jointe
aller sur "www.cjoint.com"
-clic sur "parcourir"
-sélectionnez votre fichier à envoyer
-clic sur "créer le lien Cjoint" (bouton en bas)
-clic droit sur le lien proposé, et sélectionnez "copier l'adresse du lien"
-sur votre nouvelle demande CCM, -clic droit coller
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
Modifié par MANUELTemo le 29/04/2016 à 12:00
voici donc le lien

https://www.cjoint.com/c/FDDj7TMHAgC

cld
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 11:30
Sur la feuille trame commande vous trouverez la parti tout en haut où c'est marqué société et contact et pareil sur la designation et le PU HT à modifier
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 11:31
y a un bouton generer la commande et quand vous allez clik vous verrez qu'il y aura un bugue sur les dernieres actions que vous m'avez donnés!!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
29 avril 2016 à 12:06
En ce qui concerne la macro 1
1ère erreur: Dans la feuille "Commandes", les numéros de commandes de la colonne A ne sont pas aux bon format à partir de la ligne 20, mettre tout au format "standard".
2ème erreur: Dans le code de la macro 1, impossible d'effacer le bouton (pas le bon numéro, et remplacement d "Picture" par "Image"). De plus le numéro des boutons peut être incrémenter par l'appli, pour contourner ce problème, création d'une boucle qui va tester tous les numéros compris entre 1 et 1000, et les supprimer.
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

    Sheets("commandes").Select 'selection de l'onglet
    Range("A" & Rows.Count).End(xlUp).Select 'selection de la derniere ligne non vide dans colonne A, recherche du bas vers le haut
    ligne = ActiveCell.Row 'numero de la ligne non vide en début de macro
    num_commande_old = ActiveCell.Value 'numero de la derniere commande
    num_commande_new = num_commande_old + 1 ' numero de la nouvelle commande
    Range("B" & (ligne + 1)).Value = num_commande_new 'inscription du nouveau numero de commande dans la liste
    annee_en_cours = Year(Date) 'année en cours
    nom_commande = ("PM_" & CStr(annee_en_cours) & "_" & CStr(num_commande_new)) 'nom de la commande
    Sheets("trame commande").Select 'selection de l'onglet
    Range("G21:N21").Value = nom_commande 'inscrit le numero de la commande sur la commande
    
    'copie des infos d'une feuille vers l'autre
    Worksheets("commandes").Range("A" & (ligne + 1)).Value = Worksheets("trame commande").Range("AX23:BD23").Value 'date de la commande
    Worksheets("commandes").Range("B" & (ligne + 1)).Value = Worksheets("trame commande").Range("AR13:BD13").Value 'nom du fournisseur
    Worksheets("commandes").Range("F" & (ligne + 1)).Value = Worksheets("trame commande").Range("AS47:AV48").Value 'montant HT
    Worksheets("commandes").Range("G" & (ligne + 1)).Value = Worksheets("trame commande").Range("AS56:AZ57").Value ' Montant TTC
    
   'création du fichier excel de la commande
    Set objworkbooksource = ActiveWorkbook
    Worksheets(1).Copy
    Set objWorkbookCible = ActiveWorkbook
   
    ActiveSheet.Unprotect 'desactive la protection
    For i = 1 To 1000 'Supprime les boutons
        On Error Resume Next
        ActiveSheet.Shapes.Range(Array("Image " & i)).Select
        If Err.Number = 0 Then Selection.Delete
        On Error GoTo 0
    Next i
    
Suite:
    Sheets(1).Name = nom_commande 'change le nom de l'onglet
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'active la protection
   
   'efface les données de la trame commande
    Windows("DDDDDD.xlsm").Activate
    Worksheets("trame commande").Activate
    Range("G21:N21").Value = "" 'efface le numero de la commande
    Range("G23:N23").Value = "" 'efface la référence commande
    Range("AL27:AN45").Value = "" 'Effacer la quantité
    Range("AR23:BD23").Value = ""   'effacer date
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub


Y a t-il encore d'autres erreurs? si oui, A quel endroit?
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 12:25
oui y a un bugue sur la ligne 1004,

ActiveSheet.Shapes.Range(Array("Generercommande" & i)).Select
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 12:49
Désolé, mais cette ligne est introuvable dans le fichier que vous avez déposé.
1004 est un code erreur généré par le VBA, cela ne veut pas dire que l'erreur se situe à la ligne 1004. dans le cas présent, il cherche "Generercommande" qui n'existe nulle part dans votre programme. d'ou l'erreur 1004.
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
29 avril 2016 à 12:42
il prenne pas en compte toute cette parti

Sheets(1).Name = nom_commande 'change le nom de l'onglet
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'active la protection

'efface les données de la trame commande
Windows("DDDDDD.xlsm").Activate
Worksheets("trame commande").Activate
Range("G21:N21").Value = "" 'efface le numero de la commande
Range("G23:N23").Value = "" 'efface la référence commande
Range("AL27:AN45").Value = "" 'Effacer la quantité
Range("AR23:BD23").Value = "" 'effacer date
ActiveWorkbook.Save
ActiveWorkbook.Close
Pour effacer toutes les donner apreès avoir géneré la commenade

il fait que boucler sur

For i = 1 To 1000 'Supprime les boutons
On Error Resume Next
ActiveSheet.Shapes.Range(Array("Image " & i)).Select
If Err.Number = 0 Then Selection.Delete
On Error GoTo 0
Next i

cld
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
29 avril 2016 à 15:28
Remplacez
    For i = 1 To 1000 'Supprime les boutons
        On Error Resume Next
        ActiveSheet.Shapes.Range(Array("Image " & i)).Select
        If Err.Number = 0 Then Selection.Delete
        On Error GoTo 0
    Next i

par
    For i = 1 To 1000  'Supprime les boutons
        On Error Resume Next
        ActiveSheet.Shapes.Range(Array("Image " & i)).Select
        If Err.Number = 0 Then
            Selection.Delete
            GoTo Suite
        End If
        On Error GoTo 0
    Next i
    
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
Modifié par MANUELTemo le 29/04/2016 à 16:17
d'accord merci

ça marche bien!!!
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 08:56
Bonjour,

J'en ai encore une question!! est-ce possible en VBA ou avec des fonctions sur excel afficher des donnés que correspondent à un seul fournisseur???

genre quand je sélectionne mon fournisseur il me donne directement les référence des ses articles et notamment sa désignation ainsi que le Prix HT et la TVA!!!!!!

cld
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 09:07
https://www.cjoint.com/c/FEcg7xCq5TC

Selon vos modifications mon outil marche bien mais le problème c'est que quand je génère une nouvelle commande il tiens pas en compte de valeurs, il m'affiche encore des formules si je click sur les champs c'est que veut dire quand je modifie une donné sur ma trame commande il modifie directement sur la commande que je viens de passer car il a gardé les formules.

cld
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
2 mai 2016 à 10:14
Bonjour
le problème c'est que quand je génère une nouvelle commande il tiens pas en compte de valeurs, il m'affiche encore des formules si je click sur les champs c'est que veut dire quand je modifie une donné sur ma trame commande il modifie directement sur la commande que je viens de passer car il a gardé les formules.
Je n'ai pas touché à cette partie du code, c'était déjà comme ça avant. Si vous voulez effacer les formules ajoutez un "collage spécial valeurs".
derrière la ligne suivante:
  Sheets(1).Name = nom_commande 'change le nom de l'onglet

ajouter:
    Sheets(1).Cells.Copy
    Sheets(1).Cells.PasteSpecial Paste:=xlPasteValues

Je vois aussi que vous avez déplacé la partie suivante:
    Windows("test.xlsm").Activate
    Worksheets("trame commande").Activate
    Range("G24:N24").Value = "" 'efface le numero de la commande
    Range("G26:N26").Value = "" 'efface la référence commande
    Range("AL34:AN52").Value = "" 'Effacer la quantité
    Range("AR26:BD26").Value = ""   'effacer date
    ActiveWorkbook.Save
    ActiveWorkbook.Close
d'accord, mais vous avez oublié de prendre l'étiquette "Suite:" qui va avec, vous devriez avoir ceci:
Suite:
    Windows("test.xlsm").Activate
    Worksheets("trame commande").Activate
    Range("G24:N24").Value = "" 'efface le numero de la commande
    Range("G26:N26").Value = "" 'efface la référence commande
    Range("AL34:AN52").Value = "" 'Effacer la quantité
    Range("AR26:BD26").Value = ""   'effacer date
    ActiveWorkbook.Save
    ActiveWorkbook.Close
sans quoi après avoir tester les boutons à effacer, le programme sort sans s'enregistrer.

Quant à votre demande:est-ce possible en VBA ou avec des fonctions sur excel afficher des donnés que correspondent à un seul fournisseur??? , vous pouvez utiliser les filtres.
Cdlt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 10:41
MERCI BEAUCOUP!!

par contre avec ds filtres j'en ai essayé mais ça marche pas ou j'arrive à a voir la solution que je souhaitais mais avec cette methode c deja mieux je trouve!!

Je voudrais aussi que au démarrage de mon outil, les champs Désignation, Réf article, le prix ht, montant ht et tva m'affiche vide mais en gardant bien mes formules si je click sur ces champs.

je essaye d'appliquer sur mon code vba quelque fonctions au démarrage mais je trouve pas la solution envisagé!!

pouriez vous me données quelques tuyaux?

cld
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 11:54
ah!! c'est deja ok je trouvé une solution merci
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
2 mai 2016 à 12:13
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 Sub
Cdlt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 14:04
d'accord merci ça marche aussi!!!
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
2 mai 2016 à 14:08
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié par Frenchie83 le 2/05/2016 à 15:24
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 formules
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(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
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
16 mai 2016 à 17:58
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
16 mai 2016 à 20:12
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?
0
Temo MANUEL
16 mai 2016 à 21:04
Oui c'est bien cela mais il faut que cela soit automatique et pas manuel, il qu'il me remplisse toute les champs si il y en a plusieurs sur ma feuille filtre
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
16 mai 2016 à 23:22
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
17 mai 2016 à 07:18
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
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
17 mai 2016 à 09:04
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!!!
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
17 mai 2016 à 10:17
Et aussi je voudrais savoir comment avez vous affecter la liste déroulante SELECT ENTREPRISE avec la feuille Filtre, pour qu'il me remplisse les données venant de la Feuille Artticle, merci

cldt
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
17 mai 2016 à 12:19
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
0
MANUELTemo Messages postés 25 Date d'inscription mercredi 27 avril 2016 Statut Membre Dernière intervention 17 mai 2016
17 mai 2016 à 15:17
c'est deja ok Mr. merci beacoup en tout cas!!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
20 mai 2016 à 13:35
Bonjour
Ajoutez cette ligne
 Sheets("Article").AutoFilterMode = False
après
[A2].Select
 ActiveSheet.Paste

Question: Pourquoi commencez -vous la plupart des tableaux en ligne 3 au lieu de la ligne 2?
Cdlt
0
parce que je souhaite en fait avoir une au debut vierge, pour que en sortant de mon outil tout soit vide!!!

cldt
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > MANUELTemo
20 mai 2016 à 14:41
Rien 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
0
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
0