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
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>
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
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 à 15:20
20 mai 2016 à 15:20
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
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 à 20:54
20 mai 2016 à 20:54
Bonsoir
Cdlt
Sheets("Fournisseur").[A3] = a
Cdlt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
>
MANUELTemo
21 mai 2016 à 05:04
21 mai 2016 à 05:04
Bonjour
En remplacement de
Cdlt
En remplacement de
range.fournisseur"a3".value=a
Cdlt
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
21 mai 2016 à 12:22
21 mai 2016 à 12:22
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
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
21 mai 2016 à 13:26
21 mai 2016 à 13:26
Bonjour
Sheets("Fournisseur").[A3] = Sheets("Fournisseur").[C2] OUI
Pour le reste, pouvez-vous remettre le fichier en pièce jointe SVP? .merci
Sheets("Fournisseur").[A3] = Sheets("Fournisseur").[C2] OUI
Pour le reste, pouvez-vous remettre le fichier en pièce jointe SVP? .merci
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
21 mai 2016 à 13:54
21 mai 2016 à 13:54
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
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
21 mai 2016 à 17:44
21 mai 2016 à 17:44
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
21 mai 2016 à 18:12
21 mai 2016 à 18:12
En fait j'ai mit C2 car je souhaite avoir la 1er ligne vide quand je viens sélectionner mes fournisseurs et vu que j'ai rien sur ce champs donc je peux sélectionner sans qu'il m'affiche rien sur ma trame commande!!
cldt
cldt
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
21 mai 2016 à 18:22
21 mai 2016 à 18:22
Et aussi ma macro elle a arrêté de fonctionner il filtre plus en fait
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
21 mai 2016 à 18:46
21 mai 2016 à 18:46
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
https://www.cjoint.com/c/FEvqT0jHz1w
Essayez
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
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
21 mai 2016 à 20:14
21 mai 2016 à 20:14
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
cldt
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 22/05/2016 à 04:42
Modifié par Frenchie83 le 22/05/2016 à 04:42
Bonjour
Mais dans votre macro il faut mettre cette ligne avant
Pour ce qui est de vider les feuilles à la fermeture, rajouter ceci. A adapter à votre convenance
Vous pouvez inclure toutes les lignes suivantes de votre macro dans celle ci-dessus
Cdlt
Sheets("Fournisseur").[A3] = 1
Mais dans votre macro il faut mettre cette ligne avant
ActiveWorkbook.Save ActiveWorkbook.Close
Pour ce qui est de vider les feuilles à la fermeture, rajouter ceci. A adapter à votre convenance
Sub 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
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
23 mai 2016 à 18:08
23 mai 2016 à 18:08
ç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
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 mai 2016 à 03:14
24 mai 2016 à 03:14
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
24 mai 2016 à 08:48
24 mai 2016 à 08:48
Bonjour Mr,
Je viens de faire ce que vous m'avez recommandé mais quand je ferme mon outil et que je l'ouvre, j'ai toujours comme valeur affiché dans les champs cela "#Valeur" et quand je tape il y a aucune formule, pourtant je bien suivi vos recommandations!!
cldt
Je viens de faire ce que vous m'avez recommandé mais quand je ferme mon outil et que je l'ouvre, j'ai toujours comme valeur affiché dans les champs cela "#Valeur" et quand je tape il y a aucune formule, pourtant je bien suivi vos recommandations!!
cldt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
>
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
24 mai 2016 à 09:01
24 mai 2016 à 09:01
Vous pouvez m'envoyer votre fichier?
Merci
Merci
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
Modifié par MANUELTTemo le 24/05/2016 à 09:09
Modifié par MANUELTTemo le 24/05/2016 à 09:09
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 mai 2016 à 10:47
24 mai 2016 à 10:47
Voilà
https://www.cjoint.com/c/FEyiUMZODck
Dommage que votre tableau soit rempli de cellules fusionnées, on aurait fait plus court.
Cdlt
https://www.cjoint.com/c/FEyiUMZODck
Dommage que votre tableau soit rempli de cellules fusionnées, on aurait fait plus court.
Cdlt
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
24 mai 2016 à 11:31
24 mai 2016 à 11:31
Oui ça c'est sûre!!!
J'ai un Bugue de ma macro générer la commande à la ligne " Sheets("trame commande").Select" en fait!!
cldt
J'ai un Bugue de ma macro générer la commande à la ligne " Sheets("trame commande").Select" en fait!!
cldt
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
24 mai 2016 à 11:34
24 mai 2016 à 11:34
En gros c'est la macro complete que Bugue.
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 mai 2016 à 11:38
24 mai 2016 à 11:38
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.
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.
MANUELTTemo
Messages postés
11
Date d'inscription
vendredi 20 mai 2016
Statut
Membre
Dernière intervention
24 mai 2016
24 mai 2016 à 12:54
24 mai 2016 à 12:54
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
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 mai 2016 à 14:31
24 mai 2016 à 14:31
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.
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.
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
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
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
30 mai 2016 à 20:25
30 mai 2016 à 20:25
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
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
20 mai 2016 à 16:04
20 mai 2016 à 16:17
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