Concaténer cellule en VBA avec conditions

sadness78

XLDnaute Junior
Bonjour le forum,

J'aimerais concaténer une dizaine de cellules en VBA en rajoutant une condition si la cellule est vide il ne met pas de double tiret.

Code:
Option Explicit
Sub test()

Dim liste As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim i As String
Dim j As String
Dim k As String

a = Sheets("Launcher").Range("F8").Value
b = Sheets("Launcher").Range("F9").Value
c = Sheets("Launcher").Range("F10").Value
d = Sheets("Launcher").Range("F11").Value
e = Sheets("Launcher").Range("F12").Value
f = Sheets("Launcher").Range("F13").Value
g = Sheets("Launcher").Range("F14").Value
h = Sheets("Launcher").Range("F15").Value
i = Sheets("Launcher").Range("F16").Value
j = Sheets("Launcher").Range("F17").Value
k = Sheets("Launcher").Range("F18").Value


liste = a & "-" & b & "-" & c & "-" & d & "-" & e & "-" & f & "-" & g & "-" & h & "-" & i & "-" & j & "-" & k

Sheets("Attest_BDD").Range("H2:H100") = liste

End Sub

Merci d'avance de vos lumières.

Cdlt,

Sadness
 

sadness78

XLDnaute Junior
Re : Concaténer cellule en VBA avec conditions

Bonjour,

Je vais essayer de lister étape par étape :

- L'utilisateur ouvre le fichier excel et copie colle d'une source externe la liste des sites dans l'onglet "Listes des sites"
- Ensuite il remplit l'onglet Launcher (les informations contenues dans le Launcher sont complémentaires à l'onglet "Listes des sites")
- Il appuie sur le bouton traitement des données et la macro copie la liste des sites dans "Attest_BDD" et ensuite elle vient associer à chaque sites le complément d'information contenu dans le Launcher. Ce complément d’information est identique pour tous les sites.


Encore merci en vous souhaitant un bon début de semaine.

Cdlt,
Sad
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Concaténer cellule en VBA avec conditions

Bonjour,

Merci pour la réponse. C'est plus clair en effet. Donc, pour copier les informations de l'onglet Launcher vers TOUS les sites de l'onglet Attest_BDD, la macro sera :

VB:
Sub Copie_Launcher_vers_BDD()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim rg As Range
    
    Application.ScreenUpdating = False
    
    Set ws1 = ThisWorkbook.Sheets("Launcher")
    Set ws2 = ThisWorkbook.Sheets("Attest_BDD")
    
    If ws1.Range("E3") <> "" Then       'si la case E3 n'est pas vide alors
        Set rg = ws2.Range("A2")
        Do Until IsEmpty(rg)    'copie les données de Launcher sur toutes les lignes non vides de Attest_BDD
            rg.Offset(0, 4) = ws1.Range("E3")   'Nom assuré
            rg.Offset(0, 5) = ws1.Range("E4")   'Adresse assuré
            rg.Offset(0, 6) = ws1.Range("E5")   'CP assuré
            rg.Offset(0, 7) = ws1.Range("E6")   'Ville assuré
            rg.Offset(0, 8) = ws1.Range("K3")   'Date d'effet
            rg.Offset(0, 9) = ws1.Range("K8")  'Date d'expiration
            rg.Offset(0, 10) = ws1.Range("A1")  'N° contrat
            rg.Offset(0, 11) = ws1.Range("E8")  'CDC
            rg.Offset(0, 12) = ws1.Range("E9") 'Tel
            rg.Offset(0, 13) = ws1.Range("E14") 'Signature
            rg.Offset(0, 18).Resize(1, 16) = Application.Transpose(ws1.Range("E16:E31")) 'Couvertures
            rg.Offset(0, 33) = ws1.Range("E34") 'Zone commentaire
            rg.Offset(0, 34) = ws1.Range("E39") 'RR
        Set rg = rg.Offset(1, 0)    'prochaine ligne
        Loop
    Else
        MsgBox "Valeur requise dans E3."
        
    End If
    
    Application.ScreenUpdating = True
End Sub

À tester...
A+
 

sadness78

XLDnaute Junior
Re : Concaténer cellule en VBA avec conditions

Bonjour,

C'est exactement ça, cela correspond exactement à l'idée que je me faisais par contre je ne comprends pas une chose qu'elle est la différence entre
Code:
Do While
et
Code:
Do Until
?

Merci encore Grand Chaman pour le temps passé sur mon problème.

A bientôt

Sad
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Concaténer cellule en VBA avec conditions

La différence :

Do Until IsEmpty(rg) 'copie les données de Launcher sur toutes les lignes non vides de Attest_BDD
Fait l'instruction jusqu'à ce que Excel rencontre une cellule (rg) vide

Do While IsEmpty(rg) 'copie les données de Launcher sur toutes les lignes non vides de Attest_BDD
Fait l'instruction tant que la cellule (rg) est vide
 

Discussions similaires

Réponses
11
Affichages
347
Réponses
1
Affichages
196

Statistiques des forums

Discussions
312 496
Messages
2 088 982
Membres
103 997
dernier inscrit
SET2A