Toutes mes réponses sur les forums

10 sujets de 1 à 10 (sur un total de 10)
  • Auteur
    Articles
  • en réponse à : code vba probleme avec total HT #59140
    Consultant No.3
    Participant

    Bonjour,

    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,

    en réponse à : propriété requête en VBA #56982
    Consultant No.3
    Participant

    Bonjour,

    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,

    en réponse à : Modification texte YYYY-MM en date #53453
    Consultant No.3
    Participant

    Bonjour,

    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,

    • Cette réponse a été modifiée le il y a 5 années par Consultant No.3.
    en réponse à : VBA Transposition #52467
    Consultant No.3
    Participant

    Bonjour,

    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 With

    N’hésitez pas si vous avez des questions,

    Cordialement,

    Julien Roldan

    en réponse à : Traiter les mots de passe avec Macro VBA #42836
    Consultant No.3
    Participant

    Bonjour,

    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,

    en réponse à : Faire référence a une colonne dans excel #39872
    Consultant No.3
    Participant

    Bonjour,

    Pouvez-vous joindre votre fichier de travail afin d’avoir plus d’informations sur votre besoin ?

    Merci

    en réponse à : Traiter des données importées #37859
    Consultant No.3
    Participant

    Bonjour,

    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,

    en réponse à : Empêcher de renommer une feuille #37411
    Consultant No.3
    Participant

    Bonjour,

    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 sub

    Cette 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 Sub

    Cette solution n’empêchera pas l’utilisateur de renommer l’onglet mais sa valeur ne sera pas pris en compte.

    en réponse à : SOMME.SI sur plusieurs feuilles #36643
    Consultant No.3
    Participant

    Bonjour,

    É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 😉

    • Cette réponse a été modifiée le il y a 6 années et 7 mois par Consultant No.3.
    en réponse à : Utilisation du ruban avec un Userform #36497
    Consultant No.3
    Participant

    Bonjour,

    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,

10 sujets de 1 à 10 (sur un total de 10)