Erreur variable requise vba

Résolu
niny@ Messages postés 109 Date d'inscription   Statut Membre -  
niny@ Messages postés 109 Date d'inscription   Statut Membre -
Bonjour,

dans mon pgr j'ai un problème d'erreur de "variable requise.impossible de l'affecter à cette expression".
cette erreur est indiquée au niveau de la ligne :

Mid(Cells(lig, col).Value, pos, 1) = label_cache

à l'execution, "Value"est surligné, il n'aime pas ca.
comment puis je indiquer que la variable labelcache aille bien dans la cellule ligne, colonne

d'où peut venir cette erreur,

merci
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Vous tenté ici de faire une substitution et non une affectation.

    Décomposé le problème pas à pas :

    Option Explicit

    Sub Insertion()

    Dim Valeur As String, varTexte As String

    ' Mid(Cells(lig, col).Value, pos, 1) = label_cache

    Valeur = Cells(lig, col).Value
    varTexte = Mid(Valeur, 1, pos(-1)) & label_cache & Mid(Valeur, (pos + 1))
    Cells(lig, col).Value = varTexte

    End Sub
    1
    1. niny@ Messages postés 109 Date d'inscription   Statut Membre
       
      ah ok !

      par contre je ne comprend pas trop pourquoi cette syntaxe pour la varTexte, que signifie t'elle ?
      0
  2. freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention   165
     
    en fait varTexte = Mid(Valeur, 1, pos(-1)) & label_cache & Mid(Valeur, (pos + 1)) va récupérer le résultat de
    Mid(Valeur, 1, pos(-1)) et le concaténer avec label_cache et concaténer le tout avec Mid(Valeur, (pos + 1))
    enfin Cells(lig, col).Value = varTexte va affecter la valeur de varTexte à la cellule (lig,col)
    0
  3. Utilisateur anonyme
     
    re :

    Mid(Cells(lig, col).Value, pos, 1) = label_cache

    L'instruction Mid sous entend que vous tenter d'insérer un texte dans
    une chaine [ Cells(lig, col).Value ] à la position [ pos ] pour 1 caractère.

    suposons que la valeur de la cellule est : [ abc0xyx ] et que label_cache = 5

    et que tentiez d'insérer une valeur à la 4ième position
    si pos = 4

    Ici varTexte recupère les trois premiers caratères de la chaine
    varTexte = Mid(Valeur, 1, pos(-1))
    [varTexte = "abc" ]
    Ici varTexte recupère les trois premiers caratères de la chaine et concatène la valeur dans label_cache
    varTexte = Mid(Valeur, 1, pos(-1)) & label_cache
    [varTexte = "abc5" ]
    Ici varTexte recupère les trois premiers caratères de la chaine et concatène la valeur dans label_cache
    et concatnène le reste de la chaine
    varTexte = Mid(Valeur, 1, pos(-1)) & label_cache & Mid(Valeur, (pos + 1))
    [varTexte = "abc50xyz" ]

    Lupin
    0
    1. niny@ Messages postés 109 Date d'inscription   Statut Membre
       
      si j'ai bien compris donc pour moi :

      ma chaine dans mon tableau est : opt__|inst?|cal!|id~|

      il faut que je mette la valeur de mon label caché aprés le ~

      valeur= cells(lig,col).value
      pos = instr(1,valeur,"~")
      vartexte = mid(valeur,1,pos +1) & label_cache

      mais je vois pas trop où je récupère la chaine dans mon tableau, la chaine complétée ?

      dsl mais j'ai vraiment du mal sur ce point :-(
      0
      1. niny@ Messages postés 109 Date d'inscription   Statut Membre > niny@ Messages postés 109 Date d'inscription   Statut Membre
         
        en fait c'est bon maintenant je récupère bien ce que je veux mais ca me suprime le ~ et me met deux espaces entre id et la valeur du label caché

        pos1 = InStr(1, Cells(lig, col).Value, "~")

        valeur2 = Cells(lig, col)
        varTexte = Mid(valeur2, 1, pos1 - 1) & label_ca
        Cells(lig, col).Value = varTexte
        0
  4. Utilisateur anonyme
     
    re :

    Sub Traitement()
    
        Dim Lig As Long, Col As Long, Pos1 As Long
        Dim Valeur2 As Variant, label_cache As Long
        Dim varTexte As String
        
        Lig = 5: Col = 5: label_cache = 5
        Pos1 = InStr(1, Cells(Lig, Col).Value, "~")
    
        Valeur2 = Cells(Lig, Col).Value
        ' Découpé en exécution pas à pas avec un espion sur varTexte
        varTexte = Mid(Valeur2, 1, Pos1)
        varTexte = varTexte & Trim(label_cache)
        varTexte = varTexte & Mid(Valeur2, (Pos1 + 1))
    
        ' Sur une seule ligne, ça donne
        varTexte = Mid(Valeur2, 1, Pos1) & Trim(label_cache) & Mid(Valeur2, (Pos1 + 1))
    
        Cells(Lig, Col).Value = varTexte
        
    
    End Sub
    '
    


    Lupin
    0
    1. niny@ Messages postés 109 Date d'inscription   Statut Membre
       
      cool ca fonctionne trés bien !

      je te remercie beaucoup pour ton aide et explications !!!

      je peux continuer mon programme!

      bonne soirée

      encore merci
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    re :

    Ce fut un plaisirs :-)

    Bonne continuité.

    Michel ( alias Lupin )
    0
    1. niny@ Messages postés 109 Date d'inscription   Statut Membre
       
      j'ai encore une petite question :

      an faisant ce type d'insertion, quand je rajoute un élèment dans la chaine je n'ai plus la suite de celle ci.
      j'ai essayé de changer l'ordre de traitement de ma chaine c'est à dire : l'insertion du nom de l'install apres ?, puis cal aprés ! et id apres le ~ , résulat ca fait n'importe quoi.

      si je fais élèment aprés élements ca m'efface ce qui suit mon insertion. ceci vient de mon affectation au niveau de la cellule non ?

      encore merci, aprés je t'embete plus sur ca lol
      0
      1. niny@ Messages postés 109 Date d'inscription   Statut Membre > niny@ Messages postés 109 Date d'inscription   Statut Membre
         
        c'est bon dans mon cas il suffisait de faire :

        type_breaker = Mid(Cells(lig, col).Value, 1, 4)
        valeur = type_breaker & "|INST?" & nom_insta & "|CAL!" & Mid(label_ca, 3) & "|ID~" & label_cache
        MsgBox valeur

        Cells(lig, col).Value = valeur

        et ca récupère toute la chaine souhaitée. merci pour tout
        0