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 :

VBA Erreur sur Trim(Cells(1,1).Value)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut VBA Erreur sur Trim(Cells(1,1).Value)
    Bonjour à tous,

    Je vous expose les faits : je suis sur une application permettant d'uploader un fichier.txt, de le sauvegarder, l'ouvrir, récupérer et copier les données dans une feuille Excel.

    Jusque la aucun problème.

    Néanmoins, je bloque sur quelque chose.


    Je vous explique, mon fichier Excel contient différente colonne de données, mais toutes font référence à un identifiant. Le but de cette partie est de faire ceci :

    Exemple :

    Idenfiant | Type | Commentaire
    001 | chose | cool
    001 | chose | bien


    Voila, le but étant de n'avoir qu'une seule ligne par identifiant, et de récupérer les commentaires des lignes ayant le même id, pour les coller à la suite du 1er.

    Ceci dis mon code fonctionne. Cependant, j'ai un gros problème d'espace quand je colle mes commentaires. C'est pourquoi je cherche à supprimer les espaces avant le 1er caractère, et après le dernier caractère; avant de le coller.

    Voici le code :

    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
     
    'Boucle qui commence à la dernière ligne, et remonte de 1
    For k = vNouveauNbLigne To 2 Step -1
           'Si ma celulle de la 2ème colonne, à le même identifiant que la ligne du dessus
            If Cells(k, 2).Value = Cells(k - 1, 2).Value Then
               'J'essaie de supprimer les espaces avant et après du texte de la cellule (colonne 7) qui contient un commentaire  
                Cells(k - 1, 7) = Trim(Cells(k - 1, 7).Value)
               'Je fais la même chose pour le commentaire mais de la ligne d'au dessus
                Cells(k, 7) = Trim(Cells(k, 7).Value)
                 'Je recopie le commentaire de l'identifiant (001 par exemple) de la ligne 2, pour le coller à coté du commentaire du même identifiant
                 Cells(k - 1, 7).Value = Cells(k - 1, 7).Value & Trim(Cells(k, 7).Value)
                
                'Puis je supprime la dernière ligne, dont je viens de copier le commentaire
                Rows(k).Delete
                
    
            End If
    Next

    L'erreur retournée est : "Erreur 1004 : Erreur définie par l'application ou par l'objet".
    Je sais que l'erreur provient de la ligne colorée en rouge.

    Et je bloque depuis plusieurs heures.

    Si quelqu'un à des questions (car on me dit souvent que j'explique pas très bien ).

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    si la valeur est null, le trim qui attend du string est désappointé, implémenter un null dans un string provoque une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(k - 1, 7) = Trim("" & Cells(k - 1, 7).Value)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut
    Bonjour rdurupt,

    Tout d'abord merci à toi pour cette solution, je n'y avais pas pensé.

    Néanmoins, j'ai toujours cette erreur.

    Toutefois j'ai pu remarquer, que sur mes 1400lignes traitées, l'erreur sruvient quand je suis à la ligne k = 708.

    Si je regarde sur cette ligne je peux remarquer en effet, que le commentaire de cette ligne est : " ceci est son commentaire "

    Donc je me pose toujours des questions, et je suis à votre écoute si vous avez des solutions.

    Merci d'avance.

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    poste un partie de ton fichier Excel la ligne k = 708. par exemple
    et éventuellement quelques ligne que tu considères ok
    Dernière modification par ok.Idriss ; 17/04/2013 à 11h04. Motif: SMS à éviter

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,
    Controle bien la valeur contenue dans ta cellule au moment du debogage...
    Si k=708 il s'agit de la ligne 707..

    Au moment du debogage tu peu afficher le contenu de ta cellule dans la fenêtre exécution

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut Résolu
    Re bonjour,

    Je viens de trouver une solution, c'est de ne plus utiliser le Trim() pour effectuer un effacement avant et après mais un LTrim() sur le 1er commentaire, et un RTrim() sur les autres.


    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
     Dim k As Integer
        For k = vNouveauNbLigne To 2 Step -1
     
            If Cells(k, 2).Value = Cells(k - 1, 2).Value Then
                Cells(k - 1, 7) = RTrim("" & Cells(k - 1, 7).Value)
                Cells(k, 7) = RTrim("" & Cells(k, 7).Value)
                Cells(k - 1, 7).Value = " " & LTrim(Cells(k - 1, 7).Value) & RTrim(" " & Cells(k, 7).Value)
                'Cells(k - 1, 7).Value = Trim(Cells(k - 1, 7).Value)
     
                Rows(k).Delete
                'MsgBox Cells(vNouveauNbLigne - 1, 7).Value & "autre : " & Cells(vNouveauNbLigne, 7).Value
            End If
     
            Columns("G:Z").ColumnWidth = 50
     
     
        Next
    Et niquel, j'ai le résultat obtenu.

    En tout cas, je tiens à vous remerciez de l'attention que vous avez porté à mon problème, je me suis inscris hier en tant que membre, et je ne le regrette pas.

    A très bientôt.


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2010, 10h43
  2. [VBA] Erreur Sur Recopie De Cellule
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/01/2007, 10h48
  3. EXCEL/ VBA Erreur sur le code VBA : rediriger l’erreur
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/12/2006, 16h28
  4. [VBA] Erreur sur changement de coleur
    Par darkphenx dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2006, 15h28
  5. [VBA] Erreur sur une requête avec un opérateur
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2006, 17h12

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