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 :

Recherche de variables string


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut Recherche de variables string
    Bonjour,

    Je suis actuellement débutant en VBA et souhaite votre éclairage concernant un certain point sur les macros.

    Pour faire rapidement, j'essaye de créer un fichier de gestion de stock de produits diverses (fournitures). Lors de l'augmentation ou la diminution de mon stock, je souhaite faire remplir par l'utilisateur un input Box dans lequel il rentre la quantité de stock à retirer ou à ajouter.

    La où j'ai un problème, c'est qu'à la base mon code est comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro_incre()
     
    saisi = InputBox("Combien voulez vous ajouter?", "Ajout de stock", 0)
    If saisi < 0 Or Not (IsNumeric(saisi)) Then
        Rep = MsgBox("Erreur de saisie veuillez recommencer")
     
    Else
        Range("B6") = Range("B6") + saisi
     
    End If
    Le problème étant le suivant: la macro est associée à une ligne. Si mon utilisateur fait un tri dans le tableau des données (Il y a une colonne CRAYON en A et une colonne Quantité en B par exemple) l'incrémentation se fera sur la cellule "B6" qui ne sera plus associée au bon produit.

    Ce faisant, je souhaite donc créer une variable dont le contenu serait une chaine de caractère (par exemple: mavariable_crayon= "crayons"). Une fois mon inputbox remplie par l'utilisateur, la macro cherche le chaine de caractère "crayons" dans la feuille voulue, se place sur la cellule intitulée "crayons" puis se décalle d'une case (donc avec un offset(0,1)) et incrémente.

    Seulement je n'arrive pas à créer de variable contenant une chaine de caractère et ne connait aucune fonction VBA permettant de chercher une chaine de caractère au sein d'une feuille Excel.

    Merci de votre aide.


    PS: Voici ci dessous le fichier si mes explications ne sont pas assez claires.
    mdp: Darwin
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La macro cherche dans la colonne C la ligne de le variable avec la fonction Match qui est l'équivalent de la fonction EQUIV. Cette ligne sert à incrémenter la colonne D. Il te reste à savoir comment renseigner la variable "mavariable_crayon" que j'ai mise ici égale à C13. N'hésite pas à poser des questions s'il y a des points que tu ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro_incre()
        Dim mavariable_crayon As String, Ligne As Long
        With Sheets("Stock")
           mavariable_crayon = .[C13]
           saisi = InputBox("Combien voulez vous ajouter?", "Ajout de stock", 0)
           If saisi < 0 Or Not (IsNumeric(saisi)) Then
               rep = MsgBox("Erreur de saisie veuillez recommencer")
     
           Else
               Ligne = Application.Match(mavariable_crayon, .[C:C], 0)
               .Cells(Ligne, 4).Value = .Cells(Ligne, 4).Value + CDbl(rep)
           End If
        End With
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour cette réponse rapide!
    En ce qui concerne le renseignement de mavariable_crayon, celle-ci se fera dans un premier temps manuellement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(Ligne, 4).Value = .Cells(Ligne, 4).Value + CDbl(rep)
    Concernant cette ligne (la 11ème) si j'ai bien compris il prends la ligne avec la variable concernée, puis se dirige à la colonne n°4 (donc la D) de la ligne concernée.
    Ensuite il prend la valeur présente en colonne D et y ajoute CDbl(rep) soit la valeur entrée par mon utilisateur via inputbox?

    (C'est important pour moi de comprendre l'algorithme de chaque bout de code de façon à pouvoir l'utiliser de manière autonome ensuite et l'adapter^^)

    Ah j'ai une question cependant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavariable_crayon = .[C13]
    en 4ème ligne
    suis-je obligé de mettre .[chaine_de_caractère_de_ma_variable] ? Ou puis-je écrire quelque chose comme tel:

    mavariable_crayon= "C13"

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(Ligne, 4).Value = .Cells(Ligne, 4).Value + CDbl(rep)
    peut se lire : la valeur de la cellule de la colonne D est égale à la valeur de cette cellule + la valeur entrée dans l'inputbox convertie en numérique (les valeurs renvoyées par une inputbox sont toujours de type string).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavariable_crayon = .[C13]
    signifie que la variable "mavariable_crayon" prend la valeur de la cellule C13. J'aurais pu écrire (mais c'est pls long) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavariable_crayon = .Range("C13")

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut
    Bonjour,

    Ah bah voilà le soucis^^ Je ne souhaite pas qu'elle prenne la valeur d'une cellule mais d'une chaine de caractère que j'aurais moi même entrée de façon manuelle dans le code.

    Je m'explique: avec votre méthode, en C13 il y aura, mettons, le mot "Crayon" d'écrit. Si l'utilisateur se retrouve à filtrer (et il le devra le faire) le mot "crayon" se retrouvera alors n'importe où dans la colonne C et la valeur incrémentée en D sera alors celle d'une autre fourniture (stylo par exemple) et c'est la tout mon problème^^
    D'où ma question de savoir si on peut écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro_incre()
        Dim mavariable_crayon As String, Ligne As Long
        With Sheets("Stock")
           mavariable_crayon = "Crayon"
           saisi = InputBox("Combien voulez vous ajouter?", "Ajout de stock", 0)
           If saisi < 0 Or Not (IsNumeric(saisi)) Then
               rep = MsgBox("Erreur de saisie veuillez recommencer")
     
           Else
               Ligne = Application.Match(mavariable_crayon, .[C:C], 0)
               .Cells(Ligne, 4).Value = .Cells(Ligne, 4).Value + CDbl(rep)
           End If
        End With
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Un mot, avant qu'on continue : mets ton code entre les balises de code, sinon le premier modo qui se réveille va te tomber dessus
    Tu le mets en surbrillance et tu cliques sur la touche "#" dans les icônes.

    Tu peux utiliser une inputbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro_incre()
    Dim mavariable_crayon As String, Ligne As Long
    With Sheets("Stock")
        mavariable_crayon = InputBox("Que voulez-vous mettre dans la variable ""mavariable_crayon""?")
        saisi = InputBox("Combien voulez vous ajouter?", "Ajout de stock", 0)
        If saisi < 0 Or Not (IsNumeric(saisi)) Then
            rep = MsgBox("Erreur de saisie veuillez recommencer")
     
        Else
            Ligne = Application.Match(mavariable_crayon, .[C:C], 0)
        .Cells(Ligne, 4).Value = .Cells(Ligne, 4).Value + CDbl(rep)
        End If
    End With
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut
    Bonjour,

    Donc c'est bon après plusieurs essais c'est concluant, je vous remercie donc

    Bon fin de week-end à vous!

    (je posterai sur d'autres questions plus tard je pense au fil de mon avancée dans le programme).

    PS: merci pour le tuyaux des balises, je ne savais pas comment faire^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2014, 13h33
  2. Recherche d'un mot dans une variable string
    Par bataviar dans le forum Débuter
    Réponses: 8
    Dernier message: 27/05/2008, 14h10
  3. recherche dans une variable String
    Par vallgui dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 30/10/2006, 11h32
  4. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 21h53
  5. Recherche d'un String dans un String ?
    Par apen2k2 dans le forum Langage
    Réponses: 9
    Dernier message: 14/04/2003, 11h08

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