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 :

problème ucase left


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut problème ucase left
    bonjour tout le monde

    je bloque sur quelques fonctions en vb ;j'aimerais savoir si j'ai fait le bon choix de fonction.j'ai des erreurs dans les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' 10Jul2012000001  je dois convertir ce format date donc j'ai pensé à supprimer
     'les 6 derniers caractéres mais ça me retourne erreur d'incompatibilité
     
     Range("M" & ligne) = Left(Range("M" & ligne).Value, Len(Range("M" & ligne).Value - 6))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' sur cette colonne je veux faire une conversion du km au m pour cela je dois repérer le symbole M qui se trouve dans le champs suivant Details=0210/M///PROV situé entre"/"
     
    If UCase(Range("O" & ligne)) Like "*/M/*" Then
                    Range ("O" & ligne) / 1000 = bat
                    bat = Range("O" & ligne)
                End If
    j'aimerais aussi ajouter dans une colonne N la date contenu dans la colonne m mais dans le format "yyyy-mm"

    je vous remercie de votre collaboration

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub MEF()
        Dim CIBLE, Code As Variant
        Dim ligne As Integer
        Dim Val As Range
     
    Worksheets(1).Columns("C:C").Insert Shift:=xlToRight
    Worksheets(1).Columns("N:N").Insert Shift:=xlToRight
    Worksheets(1).Rows(1).Delete
    ThisWorkbook.Worksheets(1).Cells(1, 3) = "ARTICLE "
     For ligne = 3 To Range("B" & Rows.Count).End(xlUp).Row
     
        If (IsEmpty(Range("B" & ligne))) Then
        'MsgBox "Code Article Manquant à la ligne " & ligne
        Exit Sub
        Else
        CIBLE = Range("B" & ligne)
     
     ' 10Jul2012000001  je dois convertir ce format date donc j'ai pensé à supprimer
     'les 6 derniers caractéres mais ça me retourne erreur d'incomptaibilité
     
     'Range("M" & ligne) = Left(Range("M" & ligne).Value, Len(Range("M" & ligne).Value - 6))
     
     ' sur cette colonne je veux faire une conversion du km au m pour cela je dois repérer le symbole
     'contenu Details=0210/M///PROV situé entre"/"
     
    If UCase(Range("O" & ligne)) Like "*/M/*" Then
                    Range ("O" & ligne) / 1000 = bat
                    bat = Range("O" & ligne)
                End If
     
     'la dans la colonne N j'aimerais mettre une date dans format yyyy-mm
     'qui corresspond à la date de la colonne M sans le jour dd-yyyy-mm
     ActiveSheet.Range("N" & ligne) = Format(Range("M" & ligne))
       Feuil1.Range("K" & ligne).NumberFormat = "###0"
           'MsgBox "Code Article " & CIBLE & " recherche"
            Call Find(CIBLE, Code, ligne)
     End If
    Next ligne
    End Sub
    Sub Find(CIBLE, Code, ligne)
    Dim x As Variant
    Dim Val As Range
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False
    Set wbk = Workbooks.Open("C:\redirection\table.xlsx")
       With wbk.Worksheets("Feuil1")
       Set Val = .Columns("A:A").Find(CIBLE, LookIn:=xlValues)
       If Not Val Is Nothing Then
         'MsgBox "Le Code Article" & CIBLE & "est dans la ligne: " & Val.Row
           Code = .Cells(Val.Row, 2).Value
          ThisWorkbook.ActiveSheet.Range("C" & ligne) = Code
            Else
        'MsgBox "Code Article " & CIBLE & " non trouvée dans la table de correspondance"
     End If
     End With
     wbk.Save
     wbk.Close
        Set wbk = Nothing
        Application.ScreenUpdating = True
    End Sub
    [/CODE]

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M" & ligne) = Left(Range("M" & ligne).Value, Len(Range("M" & ligne).Value - 6))
    Es tu sur que la longueur de chaque cellule est >= à 6?

    2 une méthode avec Split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If split(UCase(Range("O" & ligne).Value),"/")(1) ="M" Then
           Range("O" & ligne).Value = Range ("O" & ligne).Value / 1000
    End If
    3 pour la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("N" & ligne).Value = Format(Range("N" & ligne).Value,"yyyy-mmm")

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut
    merci beaucoup pour le split .
    je reviens a votre question 1
    Es tu sur que la longueur de chaque cellule est >= à 6?
    la réponse est oui car la cellule contient des champs date sous cette forme la 10Jul2012000001 . c'est la raison pour laquelle je voulais supprimer les 6 derniers caractères et garder dans la colonne voisine "N" le champs date au format "yyyy-mmm"

    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M" & ligne) = Left(Range("M" & ligne).Value, 9)
    au lieu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M" & ligne) = Left(Range("M" & ligne).Value, Len(Range("M" & ligne).Value - 6))
    ça marche mais je suis curieux de svoir pourquoi j'ai erreur avec la deuxiéme méthode .
    merci de votre aide

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    L'erreur provient du "-6" mal positionné, il doit se trouver à l'extérieur des parenthèses de "Len(...)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("M" & ligne) = Left(Range("M" & ligne).Value, Len(Range("M" & ligne).Value)-6)

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

Discussions similaires

  1. Problème avec LEFT JOIN
    Par Sorgue dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/01/2007, 18h37
  2. Problème fonction LEFT(str,len)
    Par beberd dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 07/11/2006, 18h24
  3. problème ave LEFT JOIN dans MySql
    Par lm0210 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/05/2006, 19h46
  4. Problème margin-left sous IE !
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/04/2006, 18h26
  5. Problème avec left outer join
    Par jgfa9 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/08/2005, 21h07

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