Macro vba pour concatener cellules

Résolu
Pierrot_42 -  
 Pierrot_42 -
Bonjour à tous,

Je voudrais créer une macro qui concatène des cellules d'une feuille à l'autre.

*Sur la feuille 1
J'ai des colonnes (une vingtaine) qui contiennent des valeurs, une par cellule. Les colonnes contenant les infos sont séparées entre elles par deux colonnes vides.

*Sur la feuille 2
Je voudrais un bouton, qui, lorsqu'on clique dessus, lance une macro qui concatène horizontalement le contenu des colonnes de la feuille 1, en séparant les valeurs par des virgules sans espaces.

Exemple
*Feuille 1

Toto A 1
B 2
James 3
Cameron D

*Résultat souhaité feuille 2 : (après avoir cliqué sur le bouton donc ^^)

Toto,A,1
B,2
James,3
Cameron,D

Comme dans l'exemple, il faudrait que les cellules vides ne fassent pas apparaître de problèmes de virgules.

Merci d'avance pour votre aide !
Crdt,
- Pierrot -

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    pour tenter d'^tre efficace:

    =mettre un extrait du classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
    http://cijoint.fr/
    et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
    0
  2. Pierrot_42
     
    Voici :

    http://www.cijoint.fr/cjlink.php?file=cj201106/cijc1vYCJD.xlsx

    Merci bien
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bien reçu, merci

    dans le tableau "toto" est il le résultat d'une formule ou une saisie ?
    m^me question pour les 2 colonnes séparant les données ?
    0
  4. Pierrot_42
     
    ce sont les résultats de formules,
    j'ai trouvé cette macro qui correspond à mon besoin :

    Option Explicit

    Sub newone()
    Dim I As Integer
    Dim J As Long
    Dim K As Byte
    Dim Lg As Long
    Dim Msg As String
    Dim ColDep
    Dim ColFin

    ColDep = Array(5, 35, 47, 50)
    ColFin = Array(34, 46, 49, 61)

    Lg = 4

    If Range("A1") <> "" Then
    Lg = Range("A" & Rows.Count).End(xlUp).Row
    End If

    With Sheets("Result A.R. Steering plans")
    For J = 8 To .Range("A" & .Rows.Count).End(xlUp).Row
    For K = 0 To UBound(ColDep)
    Msg = ""
    For I = ColDep(K) To ColFin(K)
    If .Cells(J, I) <> "" And UCase(.Cells(J, I)) <> "OK" And UCase(.Cells(J, I)) <> "KO" Then
    Msg = Msg & .Cells(J, I) & ","
    End If
    Next I
    If Len(Msg) > 0 Then
    Cells(Lg, 2 + K) = Left(Msg, Len(Msg) - 1)
    End If
    Next K
    Lg = Lg + 1
    Next J
    End With
    Columns("B:E").AutoFit
    End Sub

    Le problème est que qd je clique sur le bouton auquel cette macro est assignée, rien ne se passe ...
    Help please !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Ton code fonctionne bien sur le fichier fourni, en modifiant

    ColDep = Array(5, 35, 47, 50)
    ColFin = Array(34, 46, 49, 61)
    Sheets("Result A.R. Steering plans")

    Enlever 1 aux variables de ColDep et ColFin
    Modifant le nom de la feuille en Feuille 1

    Mytå
    0
  7. Pierrot_42
     
    Bonjour Mytå, michel

    Ca ne fonctionne pas encore, j'ai créé un bouton auquel j'ai affecté la macro, mais qd je clique dessus, il ne se passe rien. On dirait que la macro tourne à vide, ou qu'elle est encore attachée à un autre fichier... Comment vérifier qu'elle récupère les données du bon fichier ?

    Voici le lien où trouver une copie de mon fichier au bon format :
    http://www.cijoint.fr/cjlink.php?file=cj201106/cijFGfsJFT.xlsx

    Merci

    Cordialement,

    Pierrot
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Il faut que ton classeur soit enregistré au format acceptant les macros

      bouton office-enregistrer sous -format prenant en charge les macros
      0
    2. Pierrot_42
       
      Bonjour Michel,

      Je ne voyais rien car ma colonne A était vide ! La macro fonctionne sur mon fichier maintenant.

      Merci beaucoup à toi et Mytå !

      J'ai une autre question, je voudrais maintenant que la macro fasse le même boulot, sauf qu'au lieu d'aller chercher les infos uniquement dans la Feuille 1, elle aille les chercher dans plusieurs feuilles (4 au total, feuille 1 comprise) ! Tu me conseilles d'ouvrir un autre post ou de continuer celui-ci ?

      Crdt,

      Pierrot
      0