IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code Controls pour traitement d'un formulaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Par défaut Code Controls pour traitement d'un formulaire
    Salut tout le monde,

    Un petit souci il me semble avec la commande Controls... J'ai mis l'ensemble du code ci dessous, avec un paquet de retours ne servants théoriquement à rien mais m'ayant "aidé" à tenter de trouvé l'erreur...
    En gros, le principe :
    Je dois regrouper des codes comptables avec un code de regroupement, pour pouvoir traiter tout ça simplement avec du Excel.
    Pour ce faire, j'ai créé un form qui recense tous les codes comptables (les "Code" & i), et pour chaque code je lui attribue un code de regroupement (les "Group" & i)
    Jusque là ça marchait pas si mal.

    Ensuite, une fois le form validé, la macro doit remplir le tableau avec les regroupements demandés.
    Donc il faut parcourir tous les codes du tableau (colonne B à partir de la ligne 41), et à chaque code rencontré (Code_a) on parcourt les codes du formulaire ("Code" & i) pour retrouver et remplir la cellule ("A" & Ligne) avec le regroupement demandé ("Group" & i)
    C'est à ce moment précis que ça ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Controls("Code" & i).Value = Code_a Then
    Cette ligne ne marchant pas, je l'ai donc remplacée par un horrible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("B19").Value = Code_a
    Range("C19").Value = Controls("Code" & i).Value
    If Range("C19").Value = Code_a Then
    Afin d'avoir quand même un truc qui marche... Mais c'est moche et surtout très lent.... Et ce que je ne comprends pas c'est que quand je mets la valeur Controls("Code" & i) dans une cellule et que je la teste avec le If ça marche, et quand j’intègre le test If avec le Controls ça ne marche plus... En plus j'avais réussi à faire marcher un code de ce type la semaine derniere ... Qqn a une idée de ce qui est surement gros comme une maison devant mon nez ??

    Mon code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Sheets("Exploit Quadra").Activate
    ligne = Sheets("Exploit Quadra").Range("A41").Row
    Do
     
    Range("A19").Value = ""
    Range("B19").Value = ""
    Range("C19").Value = ""
    Range("D19").Value = ""
     
    Code_a = Sheets("Exploit Quadra").Range("B" & ligne).Value
    For i = 1 To 30 'NB CODES RECUPERABLES ACTUELLEMENT
     
    Range("A19").Value = ligne
    Range("B19").Value = Code_a
    Range("C19").Value = Controls("Code" & i).Value
    'MsgBox "ligne = " & ligne & " / Code_a = " & Code_a & " / i = " & i & " / Code = " & Controls("Code" & i).Value & " / Groupe = " & Controls("Group" & i).Value
     
    If Code_a = "" Then
    MsgBox "Fin des regroupements"
    GoTo Fin_de_boucle:
    End If
     
    'If Controls("Code" & i).Value = Code_a Then
    If Range("C19").Value = Code_a Then
    Range("D19").Value = "OK"
    Sheets("Exploit Quadra").Range("A" & ligne).Value = Controls("Group" & i).Value
    GoTo Code_suivant
    End If
     
    Next i
    Code_suivant:
    ligne = ligne + 1
     
    Loop
    Fin_de_boucle:
    Range("A19").Value = ""
    Range("B19").Value = ""
    Range("C19").Value = ""
    Range("D19").Value = ""

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Nico, bonjour le forum,

    Attention le contrôle renvoie une valeur de format String et il semblerait que Code_a soit numérique. Essaie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Controls("Code" & i).Value = CStr(Code_a) Then

Discussions similaires

  1. [AC-2013] code incomplet pour insertion image dans formulaire
    Par Jeanaiasse dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/12/2019, 20h50
  2. Réponses: 7
    Dernier message: 10/03/2015, 14h00
  3. Aide pour Traitement d'un formulaire - PHP
    Par De Felger dans le forum Langage
    Réponses: 44
    Dernier message: 08/04/2012, 19h40
  4. [XML] Code PHP pour traitement de fichier XML
    Par gaggy dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/09/2007, 18h44
  5. code VB pour ouvrir une page d'un formulaire
    Par marion67 dans le forum Access
    Réponses: 10
    Dernier message: 31/12/2005, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo