Toutes mes réponses sur les forums
-
AuteurMessages
-
Consultant No.3
ParticipantBonjour,
Votre code de calcul et d’affichage des valeurs pour la TextBox3 qui représente le Prix HT sont placés dans la macro “Private Sub ComboBox1_Change()”. Ces calculs ne s’effectueront donc uniquement lors du changement de votre ComboBox1 qui correspond à la liste déroulante TVA.
Afin d’activer ce calcul même s’il n’y a pas de TVA, il vous faudra placer également le même code de calcul sous les 2 macros suivantes :
-Private Sub Textbox1_Change()
-Private Sub Textbox2_Change()Dans ce cas là chaque fois que la valeur de la quantité (Textbox1) ou du prix (Textbox2) changera, le Px unitaire sera calculé.
Cordialement,
Consultant No.3
ParticipantBonjour,
Sur le site des documentations de Microsoft il existe une liste de toutes les propriétés existantes, voici le lien :
https://docs.microsoft.com/en-us/office/vba/api/excel.querytable.refresh
Merci,
Consultant No.3
ParticipantBonjour,
Excel ne reconnait pas le format date car un format date comprend une année, un mois et un jour. Or dans votre cas il manque le jour.
Vous pouvez cependant utiliser la formule suivante :
*Prenons pour hypothèse que votre date se trouve dans la cellule A1
En Anglais =Date(Year(A1),Month(A1),1)
En Français =Date(Annee(A1);Mois(A1);1)Vous obtiendrez donc la valeur : 2019-01-01 (selon les paramètres de dates de votre ordinateur)
Vous pourrez ainsi par la suite changer le format de votre date à votre guise.
Merci,
Consultant No.3
ParticipantBonjour,
Est-ce que la macro existante fournit le résultat escompté ?
Si oui sur mon poste elle roule en 6 secondes, ainsi il sera difficile de faire mieux en terme de performance…d’autant plus que les boucles sont déjà pas mal optimisées.J’ai cependant remarqué 2 portions du code pouvant être amélioré:
1- Au lieu d’utiliser une boucle pour définir le nombre de ligne dans l’onglet Tabelle 1 (la variable l dans votre code), vous pourriez aller chercher la dernière ligne non vide de la colonne 15 avec le code suivant :
l = Sheets(“Tabelle1”).Range(“O” & Rows.Count).End(xlUp).Row – 1
2- La suppression des données que vous faites sur l’onglet Tabelle 2 ne se fait pas correctement car elle est basée sur la variable l qui correspond au nombre de ligne de l’onglet Tabelle 1, afin d’être certain d’effacer toutes les lignes il faudrait donc remplacer par :
With Sheets(“Tabelle2”)
.Range(.Cells(1, 1), .Cells(1048576, 17)).Clear
End WithN’hésitez pas si vous avez des questions,
Cordialement,
Julien Roldan
Consultant No.3
ParticipantBonjour,
Voici les différents codes en considérant que Sheet1 est le nom de ta feuille de calcul
Code enlevant la protection : Sheet1.Unprotect Password:=”TonMotDePasse”
Code remettant la protection : Sheet1.protect Password:=”TonMotDePasse”Merci,
Consultant No.3
ParticipantBonjour,
Pouvez-vous joindre votre fichier de travail afin d’avoir plus d’informations sur votre besoin ?
Merci
Consultant No.3
ParticipantBonjour,
Le problème que vous rencontrez vient du fait que l’espace des milliers que vous voyez est considéré comme un caractère par excel (et non un espace) car il provient d’un copier coller d’une autre application.
Afin de supprimer ce caractère vous pouvez utiliser la fonction SUBSTITUE. Mais au lieu de mettre un simple espace avec votre clavier pour le texte à remplacer il vous faudra tout simplement faire un copier coller directement dans la cellule de la valeur (espace) que vous voulez remplacer.
Vous pouvez copier-coller cette formule ci dessous cela devrait fonctionner:
Anglais:
=VALUE(SUBSTITUTE(A7,” “,””))
Français:
=CNUM(SUBSTITUE(A7;” “;””))
Merci,
Consultant No.3
ParticipantBonjour,
Afin d’empêcher de renommer seulement certaines feuilles il vous faudra utiliser le langage VBA, il y a alors plusieurs solutions :
-La plus simple est de refaire vos liens hypertexte en VBA en utilisant la référence (name) de chaque feuille. Dans ce cas-là peu importe le nom apparent de l’onglet tant que la référence (name) ne change pas le lien hypertexte renverra toujours à la même cellule.
Exemple:
Sub Lien_Hypertexte ()
Sheet2.Activate
Range(“A3”).select
End subCette solution vous permettra d’assurer la fonctionnalité des liens hypertexte tout en laissant la liberté à vos utilisateurs de renommer les feuilles.
-L’autre solution consiste à automatiquement renommer l’onglet selon une valeur définit en VBA à chaque fois qu’il y a une action dans l’onglet. Cela permettra même si l’utilisateur change le nom de l’onglet de réatribuer la valeur souhaitée, et fonctionnelle avec le lien hypertexte, automatiquement.
Exemple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.Name <> “Onglet1” Then
ActiveSheet.Name = “Onglet1”
End If
End SubCette solution n’empêchera pas l’utilisateur de renommer l’onglet mais sa valeur ne sera pas pris en compte.
Consultant No.3
ParticipantBonjour,
Étant donné que le SOMME.SI dans ta formule te permet de déterminer le nombre de jour à ajouter à ta date de départ en fonction des autres dates de remplacement, tu pourrais tout simplement additionner les SOMME.SI en faisant la recherche sur chaque feuille.
Par exemple pour ta cellule D4 de la feuille broyeur1 tu pourrais utiliser :
=SERIE.JOUR.OUVRE(B4;SOMME.SI($B$4:$B$6;”<“&B4;$C$4:$C$6)
+SOMME.SI(Broyeur2!$B$4:$B$6;”<“&B4;Broyeur2!$C$4:$C$6)
+SOMME.SI(Broyeur3!$B$4:$B$6;”<“&B4;Broyeur3!$C$4:$C$6))J’utilise ici la même formule que toi en allant chercher dans les autres feuilles les temps d’arrêt correspondant aux éventuelles dates inférieures à la pièce concernée.
J’espère avoir compris ton besoin et répondu à ta question sinon n’hésites pas 😉
Consultant No.3
ParticipantBonjour,
Il existe 2 façons de bâtir un formulaire dans Excel :
-Dans Visual Basic (userform) : la structure du formulaire sera développée via le module Visual Basic et devra être appelé par un code VBA pour être ouvert. Il apparaitra ainsi comme une nouvelle fenêtre restreignant l’utilisateur aux fonctionnalités (contrôles) de cette fenêtre. Dans ce cas-ci vous ne pourrez donc pas accéder à votre ruban.
-Dans une feuille Excel (form) : les différentes fonctionnalités (contrôles) d’un formulaire peuvent également être utilisées directement dans une feuille Excel via l’onglet Développeur du ruban. De la même façon que le userform VBA, l’interaction entre les différents contrôles de ce formulaire pourra également être développé en VBA en faisant référence aux noms de chaque contrôles. La différence avec ce type de formulaire c’est que vous pourrez utiliser votre ruban pour exécuter des actions.
Merci,
-
AuteurMessages