Chryspy | 
				Le 30/09/2007 à 21:51        | 
				 | 
			
			
				
  | 
				Dans la colonne A J' ai en A1 le nom, en A2 la rue ,en A3 BP, en A4 le code postal ,  et en A5 la ville. Tout le long de la colonne A la meme chose se repete une centaine de fois. 
  MOn probleme est de pouvoir mettre en B1 le nom, en C1 la rue; en D1 BP, en E1  le code et en F1  la ville. 
  Il faut donc que toutes les adresses puissent s'inscrire en B2 C2 D2 E2 F2   ainsi de suite 
  MERCI DE VOTRE AIDE -- chryspy  | 
			
			
				 Tigene | 
				Le 01/10/2007 à 22:35        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Bonjour Chryspy
  Je pense qu'il faut faire ça avec une macro en VBA
  sélectionner les 5 premières cellules de la colonne A,  demander "Copier",  sélectionner une autre feuille, (par défaut la cellule sélectionné sera A1) "Collage spécial - transposé",  descendre à la ligne inférieure. Revenir sur feuille 1,  supprimer les 5 premières cellules (comme ça les 5 cellules suivantes se retrouvent en haut). revenir au début de la macro.  en boucle (for next) pour s'arrèter un jour.
  Tout ça en langage VBA, 
  Je ne suis pas assez calé en VBA pour te donner les commandes, essaye en mode apprentissage, d'abord.
  @+ -- Ce n'est pas parce qu'on a quelque chose à dire, qu'il faut forcément l'ouvrir  | 
			
			
				 Marculinos | 
				Le 02/10/2007 à 18:26        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Hello, Je me penche tout de suite sur la question. J'édite mon message dès que j'ai du nouveau.   EDIT de 19H00 : Je t'ai envoyé un mail avec un fichier Excel en pièce jointe. Pas de panique, il ne contient pas de macro malveillante. J'y ai expliqué la procédure, mais je la recopie ici :  Mail de Marculinos a écrit :Ci-joint un fichier Excel contenant une macro matérialisée par un bouton "Conversion".
  La manipulation consiste à effectuer un copier-coller le la colonne A de l'autre fichier et de la coller dans la colonne A du fichier Conversion.xls
  Ensuite, il faut cliquer sur le bouton conversion.
  Cette méthode permet de ne pas risquer la perte des informations dans le fichier d'origine. J'attends de tes nouvelles.   @+  | 
			
			
				 Tigene | 
				Le 03/10/2007 à 11:12        | 
				 | 
			
			
				  Viconaute Modérateur | 
				salut Marculinos tu me l'envoies à moi aussi, stp, ça va me permettre d'apprendre. merci -- Ce n'est pas parce qu'on a quelque chose à dire, qu'il faut forcément l'ouvrir  | 
			
			
				 Anthony | 
				Le 03/10/2007 à 11:20        | 
				 | 
			
			
				  Admin | 
				Plop   Marculinos => si tu pouvais mettre la macro sur le forum ça serait top   Merci --  
  | 
			
			
				 Marculinos | 
				Le 03/10/2007 à 16:31        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Ok pas de souci.   Bon, peut-être que certains trouveront mon style de programmation un peu "bourrin", mais j'ai appris le Visual basic sur le tas grâce à l'aide de Visual Basic pour Excel et à l'enregistreur de macros qui permet de transcrire en code des actions faites manuellement. Il suffit de créer un bouton à l'aide de la boîte à outils VBA, puis de double-cliquer dessus pour accéder à la fenêtre de code associée. Il ne reste plus qu'à y faire un copier-coller du code ci dessous: 'Selection de la cellule A1 
Cells(1, 1).Select 
 
'Détection du nombre total de lignes dans la colonne 1 
a = 1 
Do Until ActiveCell.Value = "" 
    ActiveCell.Offset(1, 0).Select 
    a = a + 1 
Loop 
 
a = a - 1 
a = a / 5 
 
'Selection de la cellule A1 
Cells(1, 1).Select 
 
For b = 1 To a 
    Cells(b, 1).Select 
    Selection.Cut 
    ActiveCell.Offset(0, 1).Select 
    ActiveSheet.Paste 
    ActiveCell.Offset(1, -1).Select 
    Selection.Cut 
    ActiveCell.Offset(-1, 2).Select 
    ActiveSheet.Paste 
    ActiveCell.Offset(2, -2).Select 
    Selection.Cut 
    ActiveCell.Offset(-2, 3).Select 
    ActiveSheet.Paste 
    ActiveCell.Offset(3, -3).Select 
    Selection.Cut 
    ActiveCell.Offset(-3, 4).Select 
    ActiveSheet.Paste 
    ActiveCell.Offset(4, -4).Select 
    Selection.Cut 
    ActiveCell.Offset(-4, 5).Select 
    ActiveSheet.Paste 
    ActiveCell.Offset(1, 0).Select 
    ActiveCell.EntireRow.Delete 
    ActiveCell.EntireRow.Delete 
    ActiveCell.EntireRow.Delete 
    ActiveCell.EntireRow.Delete 
    a = a - 4 
NextA propos,  Chryspy, je viens de m'apercevoir que j'ai oublié de retirer deux lignes contenant le texte "Msgbox a" dans la macro du fichier que je t'ai envoyé. Cela n'altère pas le fonctionnement du programme mais le ponctue d'apparitions de boîtes de dialogue inutiles, puisqu'elles m'ont seulement servi à vérifier l'état de ma variable "a" pendant le déroulement du programme.  @+  | 
			
			
				 Marculinos | 
				Le 11/10/2007 à 16:33        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Chryspy > Cela t'a servi ou me suis-je décarcassé pour des prunes?
  @+  | 
			
			
				 Tigene | 
				Le 11/10/2007 à 22:11        | 
				 | 
			
			
				  Viconaute Modérateur | 
				j'en ai bien peur, mais pour moi, j'ai appris qq chose.
  merci Marculinos @+ -- Ce n'est pas parce qu'on a quelque chose à dire, qu'il faut forcément l'ouvrir  | 
			
			
				 Marculinos | 
				Le 11/10/2007 à 22:34        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Je suis content que cela t'ai au moins servi à toi.   Au moins, je n'ai pas affaire à un nain gras.   Bonne nuit à toi, cher collègue.   @+  | 
			
			
				 Wilder | 
				Le 13/10/2007 à 17:57        | 
				 | 
			
			
				  Viconaute Modérateur | 
				Salut, Marculinos, tu de débrouille très bien en VBA! Super le script!    -- 
 
  
  |