Copie d'une plage de données dans un format different colonne en ligne

Arno94

XLDnaute Nouveau
Bonjour, bonjour amis forumeurs super baleze en language :)
J'en appel encore à votre aide (et votre indulgence) concernant une copie de donnée mais dans une forme differente de la source.

Source en colonne => Destination en Ligne
Evidemment j'ai une bonne 100 de fichiers à faire comme ça... :(


Voici mon bout de code recomposé par plusieurs trouvaille (notamment ici) :

Code:
Sub Importation()

Dim Destination As Workbook, Source As Workbook
 

 
'déclaration du fichier de destination
Set Destination = ThisWorkbook    'je dis a excel de prendre le fichier qui est ouvert

'Ajout d'un onglet
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(1)
ActiveSheet.Name = "NSI"

'Format texte
    Cells.Select
    Selection.NumberFormat = "@"
    Range("A1").Select


' On demande le nom du fichier à ouvrir et on le note en A1
Cells(1, 1).Value = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
  
'On ouvre le classeur choisi noté en A1
Set Source = Workbooks.Open(Cells(1, 1).Value)
 
Destination.Activate 'je dis a excel d activer ce fichier afin de mettre le titre des colonne ci-dessous



'Entetes du tableau


'Site
Cells(3, 1).Value = "GROUPE HOSPITALIER"
Cells(3, 2).Value = "RÉGION AP"
Cells(3, 3).Value = "HÔPITAL"
Cells(3, 4).Value = "Site"
Cells(3, 5).Value = "Opérateur"
Range("A3", "E3").Font.ColorIndex = 8 'Turquoise
'Cells(3, 5).Interior.Color = vbYellow 'Mise en couleur de la cellule

'Identité Bâtiment
Cells(3, 6).Value = "Nom Officiel"
Cells(3, 7).Value = "Nom d'usage"
Cells(3, 8).Value = "Adresse Principale"
Cells(3, 9).Value = "Nombre de secteurs"
'Cells(3, 9).Interior.Color = vbRed 'Mise en couleur de la cellule
Cells(3, 10).Value = "Nom du secteur"
Cells(3, 11).Value = "Année PERMIS de construire"
Cells(3, 12).Value = "ANNÉE fin de construction"
Cells(3, 13).Value = "construction HQE"
Range("F3", "M3").Font.ColorIndex = 5 'Bleu

'Descriptif
Cells(3, 14).Value = "Niveaux superstructure"
Cells(3, 15).Value = "Niveaux infrastructure"
Cells(3, 16).Value = "Hauteur du bâtiment"
Cells(3, 17).Value = "Cote altimétrique"
Cells(3, 18).Value = "Type de cote altimétrique"
Cells(3, 19).Value = "Type de toiture"
Cells(3, 20).Value = "SHOB"
Cells(3, 31).Value = "SHON"
Cells(3, 22).Value = "SDO"
Cells(3, 23).Value = "Niveau de précision"
Cells(3, 24).Value = "Superficie locative"
Cells(3, 25).Value = "conventions internes"
Cells(3, 26).Value = "conventions externes"
Cells(3, 27).Value = "Places de parking"
Range("N3", "AA3").Font.ColorIndex = 46 'Orange

'Activité principale
Cells(3, 28).Value = "Activité principale"
Cells(3, 28).Font.ColorIndex = 29 'Violet

'Classements
Cells(3, 29).Value = "par Commission de sécurité"
Cells(3, 30).Value = "Type"
Cells(3, 31).Value = "Catégorie"
Cells(3, 32).Value = "Classement IGH"
Cells(3, 33).Value = "Avis commission de sécurité"
Cells(3, 34).Value = "Année dernière visite sécurité"
Cells(3, 35).Value = "Capacité de sécurité"
Cells(3, 36).Value = "Accès handicapés"
Cells(3, 37).Value = "Classement monuments historique"
Range("AC3", "AK3").Font.ColorIndex = 7 'Violet

'Données de Gestion
Cells(3, 38).Value = "Statut de l'immeuble"
Cells(3, 39).Value = "Année d'entrée en gestion"
Cells(3, 40).Value = "Année de sortie de gestion"
Cells(3, 41).Value = "Année de mise en exploitation"
Cells(3, 42).Value = "Exploitant / gestionnaire"
Cells(3, 43).Value = "Responsable sécurité incendie"
Cells(3, 44).Value = "Potentiel reconversion"
Range("AL3", "AR3").Font.ColorIndex = 50 'Violet


'Code de copie

Source.Activate   'Activation de la source
'Nb_onglet = Source.Sheets.Count  'je compte les onglets qui se trouvent dans le fichier source - utile dans le nombre n'est pas defini

ligne_debut = 4 'je defini la variable ligne_debut qui correspond la plage de de commencement
variablecolonne = 0 'une variable = 0 pour le comptage des colonnes ??


'Boucle pour tous les onglets à partir du 3 (cela va toujours de 3 à 9 dans ce cas)

For compteur = 3 To 9 ' 9 à remplacer par nb_onglet quand c'est variable

Source.Worksheets(compteur).Activate  ' j active les onglets du fichier source

nb_colonne = Range("F4").End(xlToRight).Column  'je compte le nombre de Colonne utilisé dans l onglet en partant de la cellule de depart F4
' La je bloque



variablecolonne = +1
Next

Source.Close  'fermeture du fichier contenant les sources
Destination.Activate ' activation du fichier recevant les données
 
End Sub


Et pour être honnete la je bloque sur comment faire :(

Si une idée vous vient n'hésitez pas surtout :)

Bonne fin de journée

Arno
 

Pièces jointes

  • Fichier de travail NSI.zip
    111.7 KB · Affichages: 27
  • Fichier de travail NSI.zip
    111.7 KB · Affichages: 25
  • Fichier de travail NSI.zip
    111.7 KB · Affichages: 32
Dernière édition:

Arno94

XLDnaute Nouveau
Re : Copie d'une plage de données dans un format different colonne en ligne

Bonjour,

Merci bien :)

Sauf que la c'est largement au dessus de mes connaissances.....

Je vais chercher un peu à droite à gauche et je reviens :)

Merci
 

Arno94

XLDnaute Nouveau
Re : Copie d'une plage de données dans un format different colonne en ligne

Bonjour,

Je connais la touche F1 merci.... sauf qu'au boulot elle n'est pas installé (enfin F1 existe hein ^^, mais l'aide associée non) et les admin refuse de le faire... j'ai donc dl le même office et tenté de la mettre mais tout est bloqué (vous n'avez pas les droits d'administrateurs etc etc :( )

Edit : C'est good j'ai l'aide (j'ai du soudoyer un admin quand même ^^)

Par contre je pense avoir un soucis dans mes variables de comptages de colonne et ligne...

Par exemple il me compte 4 colonnes avec quelque chose dedans alors que j'en ai 6
Et ligne il me compte que 10... et en commencant par le bas (Range("F65536").End(xlUp).Row)

Il m'en compte 2 ....... :confused:

Edit 2 : Bon et bien je pense que je ne vais pas dans la bonne direction la ...

Car dans ma logique avant de faire quoi que ce soit je doit compter les colonnes utilisés et les lignes(dans mon cas la derniere est la ligne 57) il me la compte bien (j'avais une petite erreur avant)
Mais les colonnes ne sont pas compté...
J'ai mis
Code:
nb_colonne = Range("F4").End(xlToRight).Row
Il me compte 4
si je mets ceci :
Code:
nb_colonne = Range("F").End(xlToRight).Row
Il me compte zéro
si je met :
Code:
nb_colonne = Range(6).End(xlToRight).Row
ou "6"
Il ne me compte rien.
J'ai mon cerveau qui bug la ....

Et ensuite une fois qu'il me compte bien je lui dit donc de copier (copie spéciale) mais comment ?

La suis vraiment paumé..... :(
 
Dernière édition:

Hippolite

XLDnaute Accro
Re : Copie d'une plage de données dans un format different colonne en ligne

Bonjour,
J'ai vu qu'il y avait des cellules fusionnées, ça fait mauvais ménage avec les macros qui peuvent réagir de façon peu prévisible,.
Si c'est indispensable, utilise "center sur plusieurs colonnes"
A+
 

Arno94

XLDnaute Nouveau
Re : Copie d'une plage de données dans un format different colonne en ligne

Bonjour,

Merci de la réponse, oui il y a des cellules fusionnées, mais dans la plage que je souhaite recupérée il n'y en as pas (de F4 jusqu'à ?56)
C'est pour cela que je ne recupere pas les données pour l'entete de mon tableau dans le fichier source, mais je les créés en dur (Cells(3, 14).Value = "Niveaux superstructure")
Du coup cela ne devrait pas posé de soucis non?

Autre chose si j'utilise ce code pour compter la derniere colonne remplie
Code:
nb_colonne = Range("F4").End(xlToRight).Column

Et effectivement il me donne la derniere remplie (mais pas la derniere avec une valeur, beaucoup de formule dans tout les sens la dedans...)

Ralalalala Vba et débutant ne fait pas bon ménage hihihihihihi


Edit : Bon et bien j'abandonne pour aujourd'hui...
J'ai essayé de viré les formules, la mise en forme etc etc mais comme numéro de colonne non vide j'ai 156 et idem pour les lignes 57 au lieu de 56 .....

et j'ai même pas encore commencé le code de copie spécial et l'incrementation.... Ca promet :D

Si une personne pouvait me venir en aide....

Bonne fin de journée
 
Dernière édition:

Arno94

XLDnaute Nouveau
Re : Copie d'une plage de données dans un format different colonne en ligne

Bonjour, Bonjour,

Je me permets de faire remonter ce post, car je n'ai toujours pas trouvé de solution.... :(

Voici la ou j'en suis :

Code:
Sub Importation()

Dim Destination As Workbook, Source As Workbook

 
'déclaration du fichier de destination
Set Destination = ThisWorkbook    'je dis a excel de prendre le fichier qui est ouvert

'Ajout d'un onglet
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(1)
ActiveSheet.Name = "NSI"
On Error Resume Next

'Format texte
    Cells.Select
    Selection.NumberFormat = "@"
    Range("A1").Select


' On demande le nom du fichier à ouvrir et on le note en A1
Cells(1, 1).Value = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
  
'On ouvre le classeur choisi noté en A1
Set Source = Workbooks.Open(Cells(1, 1).Value)
 
Destination.Activate 'je dis a excel d activer ce fichier afin de mettre le titre des colonne ci-dessous

'Entetes du tableau

'Site
Cells(3, 1).Value = "GROUPE HOSPITALIER"
Cells(3, 2).Value = "RÉGION AP"
Cells(3, 3).Value = "HÔPITAL"
Cells(3, 4).Value = "Site"
Cells(3, 5).Value = "Opérateur"
Range("A3", "E3").Font.ColorIndex = 8 'Turquoise
'Cells(3, 5).Interior.Color = vbYellow 'Mise en couleur de la cellule

'Identité Bâtiment
Cells(3, 6).Value = "Nom Officiel"
Cells(3, 7).Value = "Nom d'usage"
Cells(3, 8).Value = "Adresse Principale"
Cells(3, 9).Value = "Nombre de secteurs"
'Cells(3, 9).Interior.Color = vbRed 'Mise en couleur de la cellule
Cells(3, 10).Value = "Nom du secteur"
Cells(3, 11).Value = "Année PERMIS de construire"
Cells(3, 12).Value = "ANNÉE fin de construction"
Cells(3, 13).Value = "construction HQE"
Range("F3", "M3").Font.ColorIndex = 5 'Bleu

'Descriptif
Cells(3, 14).Value = "Niveaux superstructure"
Cells(3, 15).Value = "Niveaux infrastructure"
Cells(3, 16).Value = "Hauteur du bâtiment"
Cells(3, 17).Value = "Cote altimétrique"
Cells(3, 18).Value = "Type de cote altimétrique"
Cells(3, 19).Value = "Type de toiture"
Cells(3, 20).Value = "SHOB"
Cells(3, 31).Value = "SHON"
Cells(3, 22).Value = "SDO"
Cells(3, 23).Value = "Niveau de précision"
Cells(3, 24).Value = "Superficie locative"
Cells(3, 25).Value = "conventions internes"
Cells(3, 26).Value = "conventions externes"
Cells(3, 27).Value = "Places de parking"
Range("N3", "AA3").Font.ColorIndex = 46 'Orange

'Activité principale
Cells(3, 28).Value = "Activité principale"
Cells(3, 28).Font.ColorIndex = 29 'Violet

'Classements
Cells(3, 29).Value = "par Commission de sécurité"
Cells(3, 30).Value = "Type"
Cells(3, 31).Value = "Catégorie"
Cells(3, 32).Value = "Classement IGH"
Cells(3, 33).Value = "Avis commission de sécurité"
Cells(3, 34).Value = "Année dernière visite sécurité"
Cells(3, 35).Value = "Capacité de sécurité"
Cells(3, 36).Value = "Accès handicapés"
Cells(3, 37).Value = "Classement monuments historique"
Range("AC3", "AK3").Font.ColorIndex = 7 'Violet

'Données de Gestion
Cells(3, 38).Value = "Statut de l'immeuble"
Cells(3, 39).Value = "Année d'entrée en gestion"
Cells(3, 40).Value = "Année de sortie de gestion"
Cells(3, 41).Value = "Année de mise en exploitation"
Cells(3, 42).Value = "Exploitant / gestionnaire"
Cells(3, 43).Value = "Responsable sécurité incendie"
Cells(3, 44).Value = "Potentiel reconversion"
Range("AL3", "AR3").Font.ColorIndex = 50 'Violet


'Code de copie

Source.Activate   'Activation de la source
'Nb_onglet = Source.Sheets.Count  'je compte les onglets qui se trouvent dans le fichier source - utile dans le nombre n'est pas defini

ligne_debut = 4 'je defini la variable ligne_debut qui correspond la plage de de commencement
variable = 0 'une variable = 0 pour le comptage des colonnes ??

'Boucle pour tous les onglets à partir du 3 (cela va toujours de 3 à 9 dans ce cas)

For compteur = 3 To 9 ' 9 à remplacer par nb_onglet quand c'est variable

Source.Worksheets(compteur).Activate  ' j active les onglets du fichier source


nb_colonne = Range("F4").End(xlToRight).Column 'je compte le nombre de Colonne utilisé dans l onglet en partant de la cellule de depart F4

nb_lignes = Range("F65536").End(xlUp).Row

Next

Source.Close False  'fermeture du fichier contenant les sources
Destination.Activate ' activation du fichier recevant les données

End Sub

J'ai enlevé tous les tests laissé en commentaires...

Merci d'avance :)
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
394

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh