Menu

Cree une mise en page à l'aide d'une feuille excel comme source [Résolu]

chevalier565 1 Messages postés mercredi 10 mai 2017Date d'inscription 10 mai 2017 Dernière intervention - 10 mai 2017 à 17:00 - Dernière réponse : Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention
- 16 juin 2017 à 11:15
Bonjour

voici mon problème, j'ai un fichier excel avec une feuille ayant toutes les données sources correspondant à des chantiers. Une ligne = un chantier . un chantier peut avoir plusieurs propriétaires.
Je souhaiterai simplifier pour une meilleur visibilité lors de l'impression. Malheureusement pour moi je ne peut pas modifié la disposition des lignes ou colonnes du fichier source car il appartient à un client.

Exemple
GPS n° longueur mode de realisation Prop 1 nom Prenom Prop 2 nom Prenon
47.1251 1 25 facile ZA 1 aaa abb ZA 2 bbb Abc

pour la mise en page

N° GPS longueur Prop nom
1 47.1251 25 ZA 1 aaa
1 47.1251 25 ZA 2 bbb

Merci pour le coup de main, je suis débutant en vba, mais cela me réduirait un temps précieux
Ps; il n'y a pas toujours plusieurs propriétaires
Afficher la suite 

11 réponses

Répondre au sujet
gbinforme 14814 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 avril 2018 Dernière intervention - 11 mai 2017 à 10:02
+1
Utile
Bonjour,

Un petit exemple avec tes données :

http://www.cjoint.com/c/GEliaSVaM5l

La feuille 2 se met à jour lorsque on l'active.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de gbinforme
chevalier565 - 14 mai 2017 à 09:24
+1
Utile
9
Bonjour
Merci beaucoup gpinforme, j'ai fait quelques modifications, et çà marche!
Je vais pouvoir gagner un temps précieux
Cette réponse vous a-t-elle aidé ?  
Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention - 16 juin 2017 à 10:05
Bon , en fait ça ne fonctionne pas suffisamment sur l'autre discussion.
Je ne vais prendre pour l'exemple que la colonne A (str0)
Je concatène avec la cellule du dessous si les cellules de la colonne 15 sont non-vide et identiques.
Sub DOUBLON()
If MsgBox("Regrouper les doublons?", vbOKCancel, "Demande de Confirmation") = vbOK Then

Set wsi = Worksheets(3)
dli = wsi.Cells(Rows.Count, 15).End(xlUp).Row
Set wso = Worksheets(4)
dlo = 0
rupt = ""
For i = 1 To dli + 1
If wsi.Cells(i, 15) <> rupt Then
If rupt <> "" Then
dlo = dlo + 1
wso.Cells(dlo, 1) = str0
wso.Cells(dlo, 15) = rupt
End If
str0 = wsi.Cells(i, 1)
rupt = wsi.Cells(i, 15)

Else
If str0 <> wsi.Cells(i, 1) Then 'Apport de l'autre discussion que me permet de ne concaténer que les cellules différentes qui se suivent
str0 = str0 & " / " & wsi.Cells(i, 1) 'Or Il faudrait que je puisse obtenir la concaténation des cellules différentes peut importe si elles se suivent ou pas
End If

End If
Next i
wso.Columns("A:O").AutoFit
wso.Select
End If
End Sub


exemple
Ca fonctionne ici :
55/55/56/57 ---> 55/56/57
Ce ne fonctionne plus ici :
55/56/57/55/57 --> 55/56/57/55/57
Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention > Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention - 16 juin 2017 à 10:07
Et je n'ai pas la possibilité de trier cette colonne A, car la concaténation se fait par le biais de la colonne 15, donc c'est paour cela que je peut retrouver des numéros qui ne se suivent pas (55/56/57/55/57)

Merci d'avance
gbinforme 14814 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 avril 2018 Dernière intervention - 16 juin 2017 à 10:36
Bonjour,

Essaies ainsi :
            If InStr(str0, wsi.Cells(i, 1)) = 0 Then 
            str0 = str0 & " / " & wsi.Cells(i, 1) 
            End If
Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention - 16 juin 2017 à 10:56
Merci, je regarde dès que possible!
Cdsj 9 Messages postés jeudi 15 juin 2017Date d'inscription 16 juin 2017 Dernière intervention - 16 juin 2017 à 11:15
gbinforme.....
You are the best!!
C'est juste parfait ça fonctionne parfaitement et tu vas me faire gagner un temps précieux de malade!!! je découvre instr()

Merci encore!!
Commenter la réponse de chevalier565