Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[résolu]Visual basic : comprendre ces lignes


Messages recommandés

Posté(e) (modifié)

Bonsoir,

 

Je cherche à comprendre ce que veulent dire ces lignes :

 

MesLignes = MesLignes & i & ":" & i & ","

 

MesLignes = Left(MesLignes, Len(MesLignes) - 1)

 

Elles sont contenues dans ça :

 

'En partant du principe que tout ça se passe dans la Feuille
'"Dépenses", que le nombre de lignes à examiner soit 1000 et que le
'critère soit "a" à vérifier dans la Colonne "M" de
'chaque ligne 

Worksheets("Dépenses").Activate
a = DetailCatDep.ControlCat.Caption
i = 1
NombreLignes = 1000
While i < NombreLignes + 1
If Cells(i, 13) = a Then
MesLignes = MesLignes & i & ":" & i & ","
End If
i = i + 1
Wend

MesLignes = Left(MesLignes, Len(MesLignes) - 1)

Sheets("Dépenses").Range(MesLignes).Copy Sheets("Feuil9").Cells(1, 1)

 

Le principe de ce code étant de sélectionner des lignes, contenant un mot dans une cellule, dans une feuille et de les copier sur une autre.

 

Le problème qui survient est le suivant :

selon le mot que je sélectionne, VB me renvoi une erreur :

erreur d'execution "5" :

argument ou appel de procédure incorrect.

 

et il souligne

MesLignes = Left(MesLignes, Len(MesLignes) - 1)

 

Avec la plupart des mots que je sélectionne, le code fonctionne mais certains me renvoient cette erreur.

 

Je ne vois à priori aucune différences entres les uns et les autres.

C'est pourquoi je voudrais comprendre ce que veulent dire ces lignes pour trouver l'erreur.

 

J'espère avoir été clair.

Si ce n'est pas le cas, posez moi des questions.

 

Merci

Modifié par scritch

Posté(e) (modifié)
Bonsoir,

 

Je cherche à comprendre ce que veulent dire ces lignes :

 

MesLignes = MesLignes & i & ":" & i & ","

 

MesLignes = Left(MesLignes, Len(MesLignes) - 1)

 

Elles sont contenues dans ça :

 

'En partant du principe que tout ça se passe dans la Feuille

'"Dépenses", que le nombre de lignes à examiner soit 1000 et que le

'critère soit "a" à vérifier dans la Colonne "M" de

'chaque ligne

 

Worksheets("Dépenses").Activate

 

Dim A

DIm MesLignes

 

a = DetailCatDep.ControlCat.Caption

i = 1

NombreLignes = 1000

While i < NombreLignes + 1

If Cells(i, 13) = a Then

MesLignes = MesLignes & i & ":" & i & ","

End If

i = i + 1

Wend

 

'tu peux rajouter ceci pour éviter l'erreur

 

on error resume next 'ce n'est pas très propre mais bon. sinon tu peux aussi faire ceci

 

if isempty(MesLignes) = true then

Z = Msgbox ("pas de valeur trouvée dans la feuille active pour: " & a )

exit sub

else

 

MesLignes = Left(MesLignes, Len(MesLignes) - 1) Sheets("Dépenses").Range(MesLignes).Copy Sheets("Feuil9").Cells(1, 1)

end if

 

Le principe de ce code étant de sélectionner des lignes, contenant un mot dans une cellule, dans une feuille et de les copier sur une autre.

 

Le problème qui survient est le suivant :

selon le mot que je sélectionne, VB me renvoi une erreur :

et il souligne

MesLignes = Left(MesLignes, Len(MesLignes) - 1)

 

Avec la plupart des mots que je sélectionne, le code fonctionne mais certains me renvoient cette erreur.

 

Je ne vois à priori aucune différences entres les uns et les autres.

C'est pourquoi je voudrais comprendre ce que veulent dire ces lignes pour trouver l'erreur.

 

J'espère avoir été clair.

Si ce n'est pas le cas, posez moi des questions.

 

Merci

 

mes commentaires en rouge dans le code.

 

pour l'explication c'est en fait assez simple.

le left permet de traiter le contenu d'une variable (MesLignes ici) pour en extraire ce que tu veux.

si cette variable est vide, tu génére une erreur.

hors dans ton while tu parcour une feuille et si tu ne trouve pas A (la variable contenant ce que tu cherches) tu fait un left sur une variable vide.(si tu ne trouve pas A dans ta feuille alors MesLignes = "" )

 

il faut donc traiter ce cas.

soit en lui disant de pas tenir compte de l'erreur (on error resume next)

soit en testant AVANT le left que ta variable n'est pas vide.

 

A+

Modifié par scuny
Posté(e)

Merci Scuny.

 

Mes erreurs sur certains mots viennent effectivement du fait que soit les mots n'existent pas là où je les cherches, soit ils ne sont pas tout à fait écrit pareil.

(Il y a une majuscule alors que je cherche sans la majuscule ....)

 

J'ai trouvé pourquoi grâce à ton explication et je t'en remercie.

 

Je vais corriger avec la méthode "isEmpty".

 

Encore merci.

 

A+

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...