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 de concaténation [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut problème de concaténation
    Bonjour à tous,

    J'ai un petit souci de concaténation :

    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
    Sub Boucle()
    Dim i As Integer, j As Integer
    Dim Plage As Range, Cellule As Range
     
    Sheets("GOOD").Activate
    i = 4
    j = 1
        Do
            If i > 15000 Then Exit Do
                If (Sheets("GOOD").[M & i] = 1) Then
                    Sheets("GOOD").Select
                    Range("E" & i & ":G" & i).Select
                    Selection.Copy
                    Sheets("test").Select
                    Range("D" & j).Select
                    ActiveSheet.Paste
                End If
                j = j + 1
                i = i + 1
        Loop While Cells(i, 2) <> ""
     
    End Sub
    le probleme se situe à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Sheets("GOOD").[M & i] = 1) Then
    Il ne veut pas prendre le code [M & i], j'ai essayé aussi ["M" & i ] mais sa ne fonctionne pas non plus , l'erreur et la suivante :

    Erreur d'éxécution '13':

    Incompatibilité de type
    Voila en espérant avoir été le plus clair possible.

    Cordialement

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("GOOD").Range("M" & i) = 1
    Sinon ton code pique les yeux avec tes slect et ton ecran doit bouger dans tout les sens essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("GOOD").Range("E" & i & ":G" & i).Copy 
    Sheets("test").Range("D" & j).paste
    Ou mieu en une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("GOOD").Range("E" & i & ":G" & i).Copy Sheets("test").Range("D" & j)

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    En faisant ça, Krovax, tu compares aussi un string et une valeur. A peut pas marcher
    Si ça marche, un exemple avec 1 en H1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub i()
    If Range("H1") = 1 Then
    MsgBox "Oui"
    Else
    MsgBox "non"
    End If
    End Sub
    Edit : marche aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("H1") = "1" Then

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Visiblement excel est suffisamment malin pour que je n'ai pas besoin de réfléchir trop loin (heureusement d'ailleurs )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i = 1
    If Range("a" & i) = 1 Then
    MsgBox "Ca marche"
    End If
    Ce code fonctionne même si la cellule contient '1 (ce qui effectivement revient à coup sur à comparer un valeur a une chaine de caractère, mais il faut croire que ceux qui l'ont pondu, on pensait a nous)

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut jackall et le forum
    [A1] est une notation abrégée de Range("A1").
    [M & i] revient donc à écrire Range("M & i"). Étonnant qu'Excel ait du mal à comprendre
    Excel fait toujours ce qu'on lui demande... rarement ce que l'on veut!
    Une autre proposition pour ta macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Boucle()
    Dim X As Long
    'Sheets("test").Range("D1:F" & Range("A1").SpecialCells(xlCellTypeLastCell).Row).ClearContents
    Sheets("GOOD").Activate
     
    For X = 4 To Range("M65536").End(xlUp).Row
        If Range("M" & X) = 1 Then
            Range("E" & X & ":G" & X).Copy Sheets("test").Range("D65536").End(xlUp)(2)
    Next X
    'Sheets("test").Range("D1:F1").Delete
    End Sub
    A+

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut
    Re bonjour à tous,

    Un grand merci à vous pour avoir donné tant de solution, et désolé d'avoir été si long à repondre, étant en stage je viens d'avoir la visite d'un de mes profs pour faire un peu le point ^^

    sinon j'ai modifier le code qui pique les yeux avec un mixte de Krovax et Gorfael :


    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
    Sub Boucle()
    Dim i As Integer, j As Integer
    Dim Plage As Range, Cellule As Range
     
    Sheets("GOOD").Activate
    i = 4
    j = 1
     
        Do
            If i > 15000 Then Exit Do
                If (Sheets("GOOD").["M & i"] = 1) Then
                    Sheets("GOOD").Range("E" & i & ":G" & i).Copy
                    Sheets("test").Range("D" & j).Paste
                End If
                j = j + 1
                i = i + 1
     
        Loop While Cells(i, 2) <> ""
    End Sub
    une fois lancé, aucun message d'erreur, mais je n'ai aussi aucun résultat, il ne me colle rien dans la feuille "test" ...

    lorsque j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("GOOD").Range("E" & i & ":G" & i).Copy
    c'est bien la ligne de E&i à G&i je ne me suis pas trompé ... ?

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Loop While Cells(i, 2) <> ""
    cela peut se traduire en : jusqu'à ce qu'il y est une cellule vide dans la 2ème colone c'est bien cela?

    merci pour votre attention
    Cordialement

  7. #7
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Utilises le debuggueur pour voir là ou tu passes et là ou tu ne passes pas.

  8. #8
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Par défaut
    ben le soucis c'est que j'ai utilisé le debogueur et il n'y a aucune erreur, mais rien de collé ...

  9. #9
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Sheets("GOOD").["M & i"] = 1)
    J'ai du mal a croire que cela fonctionne a mon avis tu ne rentre jamais dans ton bloque if


    essaye un bon vieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Sheets("GOOD").Range("M" & i) = 1)

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

Discussions similaires

  1. Problème de concaténation / conversion
    Par ero-sennin dans le forum C
    Réponses: 5
    Dernier message: 21/03/2006, 11h06
  2. [Tableaux] problème syntaxe concaténation variable
    Par mussara dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 11h24
  3. Problème de concaténation sous EXCEL
    Par ikki78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/11/2005, 17h17
  4. [Tableaux] problème de concaténation
    Par ludovik dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2005, 13h24
  5. Problème de concaténation
    Par Proktor dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 06/07/2005, 15h00

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