une formule sur excel
Hors ligneChryspy Le 30/09/2007 à 21:51 Profil de Chryspy Configuration de Chryspy

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
Hors ligneTigene Le 01/10/2007 à 22:35 Profil de Tigene Configuration de Tigene

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

Hors ligneMarculinos Le 02/10/2007 à 18:26 Profil de Marculinos Configuration de Marculinos

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.

@+
Hors ligneTigene Le 03/10/2007 à 11:12 Profil de Tigene Configuration de Tigene

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

Hors ligneAnthony Le 03/10/2007 à 11:20 Profil de Anthony Configuration de Anthony

Admin
Plop

Marculinos => si tu pouvais mettre la macro sur le forum ça serait top

Merci
--

Hors ligneMarculinos Le 03/10/2007 à 16:31 Profil de Marculinos Configuration de Marculinos

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
Next


A 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.



@+
Hors ligneMarculinos Le 11/10/2007 à 16:33 Profil de Marculinos Configuration de Marculinos

Viconaute Modérateur
Chryspy > Cela t'a servi ou me suis-je décarcassé pour des prunes?

@+
Hors ligneTigene Le 11/10/2007 à 22:11 Profil de Tigene Configuration de Tigene

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

Hors ligneMarculinos Le 11/10/2007 à 22:34 Profil de Marculinos Configuration de Marculinos

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.

@+
Hors ligneWilder Le 13/10/2007 à 17:57 Profil de Wilder Configuration de Wilder

Viconaute Modérateur
Salut,

Marculinos, tu de débrouille très bien en VBA!

Super le script!  
--


Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels