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 :

Concaténation de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut Concaténation de cellules
    Bonjour Forum,
    je voudrai faire une concaténation de cellules.Je m'explique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 28
                Enregistrement = Enregistrement & ";" & Sheets("Menu").Cells(21, i)
                Next i
    je voudrai pas prendre en considération le compteur i=2 donc je voudrai pas prendre en compte dans ma boucle la cellue(21,2).
    Autrement dit je voudrais boucler sur :
    cells(21,1),cells(21,3)......cells(21,28) .
    donc il me faut sauter cells(21,2)

    Merci d'avance

  2. #2
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonjour,

    Si tu veux "ne pas avoir i = 2" alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To 28
                If i<>2 then
                    Enregistrement = Enregistrement & ";" & Sheets("Menu").Cells(21, i).Value
                End if
    Next i
    Je ne sais pas si ça répond à ta question...

    Bertrand

  3. #3
    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,

    En complément de Bear the french, dans ton code Enregistrement commencera toujours par ; alors qu'il me semberait plus juste que ce caractère de séparation soit uniquement entre chaque cellule concaténée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 1 To 28
                If i<>2 then
                   if Enregistrement <> "" then Enregistrement  = Enregistrement & ";"
                    Enregistrement = Enregistrement & Sheets("Menu").Cells(21, i).Value
                End if
    Next i

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour à tous, ou encore pour ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Worksheets("Menu")
        Enregistrement = .Cells(21, 1).Value
        For i = 3 To 28
            Enregistrement = Enregistrement & ";" & .Cells(21, i).Value
        Next i
    End With

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre option avec JOIN. Valable uniquement pour ce cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub JoinTable()
      Const Row As Byte = 21   ' Ligne de la feuille
      Const ColStart As Byte = 3 ' 1ère Colonne
      Const ColEnd As Byte = 28  ' Dernière Colonne
      Dim mytable
      Dim Letexte As String
      mytable = Range(Cells(Row, ColStart), Cells(Row, ColEnd))
      Letexte = Cells(Row, 1) & ";" & Join(WorksheetFunction.Index(mytable, 0, 0), ";")
      Debug.Print Letexte
    End Sub
    [EDIT]
    Un seul argument suffit à la fonction INDEX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Letexte = Cells(Row, 1) & ";" & Join(WorksheetFunction.Index(mytable, 0), ";")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    bonjour,

    merci pour vos réponses.
    Mais j'ai toujours un message d'erreur , je pense que j'ai oublier de vous dire qu'avant de boucler j'avais cette ligne de code au dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Enregistrement = Requete.Fields(0).Value
    For i = 1 To 28
                Enregistrement = Enregistrement & ";" & Sheets("Menu").Cells(21, i)
                Next i
    Pour plus désinformation: je boucle sur cette plage de cellules sur excel en insérant les valeurs dans mon fichier texte dont le séparateur est un ";"

    merci

  7. #7
    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
    et a quoi sert cette ligne si tu l'effaces juste en dessous ?

    A noter que sans le numéro d'erreur, le descriptif de l'erreur et le code qu'il y a avant, impossible d'en dire plus

  8. #8
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    jfontaine ,
    Voila toute l'histoire:
    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
    Do While Not (Requete.EOF)
            If Requete.Fields(1).Value > 0 Then ' Test sur period
                Enregistrement = Requete.Fields(0).Value
                Enregistrement = Enregistrement & ";" & Requete.Fields(1).Value
                Enregistrement = Enregistrement & ";" & (1 / CDbl(Requete.Fields(2).Value))
     
                For CompA = 3 To 17
                    Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(CompA).Value))
                Next CompA
     
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(17).Value) - CDbl(Requete.Fields(18).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(19).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(19).Value) - CDbl(Requete.Fields(20).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(21).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(21).Value) - CDbl(Requete.Fields(22).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(23).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(23).Value) - CDbl(Requete.Fields(24).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(25).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(25).Value) - CDbl(Requete.Fields(26).Value))
                Enregistrement = Enregistrement & ";" & Trait0(CDbl(Requete.Fields(3).Value) - CDbl(Requete.Fields(27).Value))
     
            Else
    Enregistrement = Requete.Fields(0).Value
    For i = 1 To 28
                Enregistrement = Enregistrement & ";" & Sheets("Menu").Cells(21, i)
                Next i
            End If
    les 5 dernières lignes constituent le codes a changer en faisant la concaténation .

    Merci

  9. #9
    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
    et l'erreur ?

  10. #10
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 232
    Par défaut
    Donc quand je remplace ces ligne de codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 28
                Enregistrement = Enregistrement & ";" & Sheets("Menu").Cells(21, i)
                Next i
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 1 To 29
                If i<>2 then
                   if Enregistrement <> "" then Enregistrement  = Enregistrement & ";"
                    Enregistrement = Enregistrement & Sheets("Menu").Cells(21, i).Value
                End if
    Next i
    La macro bloque a ce niveau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enregistrement = Enregistrement & ";" & Format(CDbl(Requete.Fields(2).Value), "0.000000")
    En affichant ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d’exécution '94'
    Utilisation incorrecte de Null.
    alors que la macro s’exécute sans erreur lorsque j'utilise pas la concaténation
    Merci

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

Discussions similaires

  1. Problème concaténation (centrage cellule)
    Par leyeno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2009, 16h24
  2. Concaténation avec cellules de différents types
    Par devdev dans le forum Excel
    Réponses: 4
    Dernier message: 19/03/2009, 16h38
  3. concaténation de cellules
    Par babybell dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/09/2008, 15h10
  4. VBA EXCEL : Concaténation des cellules d'une colonne
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 17h37
  5. concaténer 2 cellules (date et texte)
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/11/2006, 13h33

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