Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Achat - Vente Informatique : jeanledidier et 11 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Besoin pour Programme macro excel

 
n°11937
el_gringo
Profil : Jeune recrue
Posté le 16-03-2005 à 22:19:58  profilanswer
 

Bonjour,
 
J'aimerais votre aide pour une macro que j'aimerais devellopé.
 
J'ai des fichiers excel qui se presente comme ceci, sur une seule colonne (A):
 
------------------------------------------
Dupont Bertrand  
(cellule vide)
Jean Guilla
(cellule vide)
Celine Yelle
(cellule vide)
-------------------------------------
 
Aprés exécution du programme macro j'aimerais obtenir un fichier comme celui ci:
 
---------------------------------------------
LISTES DES NOMS:
(cellule vide)
Nom1
(cellule vide)
Dupont Bertrand
(cellule vide)
Nom2
(cellule vide)
Jean Guilla
(cellule vide)
Nom2
(cellule vide)
Celine Yelle
(cellule vide)
-----------------------------------------------
 
 
N'etant pas informaticien j'ai un peu de mal.
 
Pourriez vous m'aidez SVP ou me donner quelque conseils.
 
Par avance Merci.
 
 

n°11941
galopin01
Profil : Membre
Posté le 17-03-2005 à 09:24:47  profilanswer
 

bonjour,

Code :
  1. Sub test()
  2. Rows(1).Insert
  3. i = Range("A65535" ).End(xlUp).Row - 1
  4. If i Mod 2 = 1 Then
  5. For j = i To 2 Step -2
  6. Range("A" & j).Value = "Nom" & (j + 1) / 2
  7. Rows(j + 1).Insert
  8. Rows(j).Insert
  9. Next
  10. Rows(2).Insert
  11. Range("A1" ).Value = "Nom1"
  12. Rows(1).Insert
  13. Rows(1).Insert
  14. Range("A1" ).Value = "LISTES DES NOMS:"
  15. End If
  16. End Sub

Ok ?

n°11951
el_gringo
Profil : Jeune recrue
Posté le 17-03-2005 à 20:36:35  profilanswer
 

GALOPIN01 a écrit :

bonjour,

Code :
  1. Sub test()
  2. Rows(1).Insert
  3. i = Range("A65535" ).End(xlUp).Row - 1
  4. If i Mod 2 = 1 Then
  5. For j = i To 2 Step -2
  6. Range("A" & j).Value = "Nom" & (j + 1) / 2
  7. Rows(j + 1).Insert
  8. Rows(j).Insert
  9. Next
  10. Rows(2).Insert
  11. Range("A1" ).Value = "Nom1"
  12. Rows(1).Insert
  13. Rows(1).Insert
  14. Range("A1" ).Value = "LISTES DES NOMS:"
  15. End If
  16. End Sub

Ok ?


 
Wahhhh trop baléze!
J'ai lu des messages te concernant et tu é trés rapide. J'aurais aimé etre fort comme toi!!
 
Merci beaucoup!

n°11952
el_gringo
Profil : Jeune recrue
Posté le 17-03-2005 à 20:47:28  profilanswer
 

el_gringo a écrit :

Wahhhh trop baléze!
J'ai lu des messages te concernant et tu é trés rapide. J'aurais aimé etre fort comme toi!!
 
Merci beaucoup!


 
Juste une question!
 
Peut tu m'expliquer ces deux lignes du prog:
 
i = Range("A65535" ).End(xlUp).Row - 1
If i Mod 2 = 1 Then
 
Que vaut la variable, j'ai pas trés bien saisi?

n°11953
galopin01
Profil : Membre
Posté le 17-03-2005 à 21:39:37  profilanswer
 

bonsoir,
Range("A65535" ).End(xlUp).Row renvoie la dernière ligne écrite dans la colonne A (On part de la ligne 65535 et on remonte jusqu'à ce qu'une cellule soit pleine)
j'ai pris cette valeur -1 car je me suis intéressé aux cellules vides ou j'ai commencé à écrire tout de suite Nom...
If i Mod 2 = 1 Then est juste une instruction de contrôle pour vérifier que cette ligne (cellulevide) porte bien un N° de ligne impair.
car toute la macro est basée sur ce postulat que le dernier quidam est bien sur une Row paire donc que les cellules vides sont sur des Rows impaires.
Mod est une fonction qui renvoie le reste d'une division :
7632 mod 2 renvoie 0
7633 mod 2 renvoie 1
7634 mod 2 renvoie 0
8 mod 3 renvoie 2  
Ok ?

n°11954
el_gringo
Profil : Jeune recrue
Posté le 17-03-2005 à 22:32:45  profilanswer
 

GALOPIN01 a écrit :

bonsoir,
Range("A65535" ).End(xlUp).Row renvoie la dernière ligne écrite dans la colonne A (On part de la ligne 65535 et on remonte jusqu'à ce qu'une cellule soit pleine)
j'ai pris cette valeur -1 car je me suis intéressé aux cellules vides ou j'ai commencé à écrire tout de suite Nom...
If i Mod 2 = 1 Then est juste une instruction de contrôle pour vérifier que cette ligne (cellulevide) porte bien un N° de ligne impair.
car toute la macro est basée sur ce postulat que le dernier quidam est bien sur une Row paire donc que les cellules vides sont sur des Rows impaires.
Mod est une fonction qui renvoie le reste d'une division :
7632 mod 2 renvoie 0
7633 mod 2 renvoie 1
7634 mod 2 renvoie 0
8 mod 3 renvoie 2  
Ok ?


 
Bonsoir a toi,
 
Oui ok jai compris.
Dérniére question (tu n'est pas obligé de répondre a celle la c'est pas important c'est juste pour que je comprenne un bonne fois pour toute mais ca serait bien que tu réponde lol).
 
Prenon ce fichier excel:
 
------A---------------------B----------------------
'---------'
'         '(cellule)
'         '(cellule)
'         '(cellule)
'---------'
Ce rectangle est:
rouge
(cellule vide)
'--------------------------'
'                          '(cellule)
'                          '(cellule)
'                          '(cellule)
'--------------------------'
Ce rectangle est:
Vert
(cellule vide)
-------------------------------------------------------
 
Comment faire pour obtenir ceci:
 
-------------------------------------------------
LISTE DES rectangle:
(cellulevide)
rectangle1:
(cellulevide)
'---------'
'         '(cellule)
'         '(cellule)
'         '(cellule)
'---------'
Ce rectangle est:
rouge
(cellulevide)
rectangle2:
(cellulevide)
'--------------------------'
'                          '(cellule)
'                          '(cellule)
'                          '(cellule)
'--------------------------'
Ce rectangle est
Vert
(cellule vide)
-------------------------------------------------------
 
 
Le carré represente 3 cellules sur une ou plusieurs collone d'une couleur quelconque ce qui donne l'impression que c'est un rectangle
 
Un peu plus compliqué cette fois non?
 
A+

n°11955
galopin01
Profil : Membre
Posté le 17-03-2005 à 23:00:16  profilanswer
 

Re:
plus compliqué non, le processus est le même
chercher la dernière ligne pleine
For i = dernièrelignepleine to 8 step -6  
(le  8 et -6 sont au pifomètre car ton croquis est un peu vague)
Range suivante.Value = rectangleN  
(avec N à calculer avec un (i / x) + y sans doute ? )
On rajoute une ligne avant et une ligne après  
... et on recommence
On termine les dernières lignes quasiment... à la main comme précédemment.
Ok ?

n°11958
el_gringo
Profil : Jeune recrue
Posté le 18-03-2005 à 09:25:39  profilanswer
 

GALOPIN01 a écrit :

Re:
plus compliqué non, le processus est le même
chercher la dernière ligne pleine
For i = dernièrelignepleine to 8 step -6  
(le  8 et -6 sont au pifomètre car ton croquis est un peu vague)
Range suivante.Value = rectangleN  
(avec N à calculer avec un (i / x) + y sans doute ? )
On rajoute une ligne avant et une ligne après  
... et on recommence
On termine les dernières lignes quasiment... à la main comme précédemment.
Ok ?


 
Je vais essayer de le faire seule cette fois ci.
 
Merci pour ton aide c'est sympa!

n°11964
galopin01
Profil : Membre
Posté le 18-03-2005 à 18:46:10  profilanswer
 

bonjour,
si tu pédales vraiment dans la scoumoune tu nous passes un petit fichier joint  
(zippé, moins de 250 Ko) via :
http://cjoint.com/index.php
A+

n°12367
el_gringo
Profil : Jeune recrue
Posté le 03-04-2005 à 20:22:26  profilanswer
 

GALOPIN01 a écrit :

bonjour,
si tu pédales vraiment dans la scoumoune tu nous passes un petit fichier joint  
(zippé, moins de 250 Ko) via :
http://cjoint.com/index.php
A+


 
Bonjour Galopin,
 
Je porte bien le nom de "jeune recrue".  
Je n'ai pas réussi a obtenir ce que je voulais!!!
Je t'envoie un fichier joint.
A+

n°12368
el_gringo
Profil : Jeune recrue
Posté le 03-04-2005 à 20:25:28  profilanswer
 

el_gringo a écrit :

Bonjour Galopin,
 
Je porte bien le nom de "jeune recrue".  
Je n'ai pas réussi a obtenir ce que je voulais!!!
Je t'envoie un fichier joint.
A+


 
le fichier joint se trouve ici
 
http://cjoint.com/?eduvNSZujN

n°12374
galopin01
Profil : Membre
Posté le 03-04-2005 à 23:44:31  profilanswer
 

Bonsoir,
Dans ton exemple (feuille de départ)
Si j'insère une ligne avant la ligne 1 , je remarque que  chaque groupe de 4 lignes représente une future structure.
 
iLastRow = Range("A65535" ).End(xlUp).Row
iNbStructures = iLastRow / 4 (pour l'instant avec la ligne ajoutée iLastRow = 8)
Ok ?
 
On va donc attaquer une boucle basée sur cet exemple (en italique des commentaires)
For j = iLastRow To 4 Step (moins quelque chose...) j = 8
Rows(j -3).Insert cuisine est passé ligne 9
Rows(j -3).Insert couloir est passé ligne 9 mais j = toujours 8
Nous allons maintenant baptiser la ligne 6 :
Range("A" & j - 2).Value = "STRUCTURE " & iNbStructures
La prochaine structure sera décrémentée de 1 donc :
iNbStructures = iNbStructures -1
Pour passer de j = 8 à j = 4 le step est de - 4 on peut donc fixer le step et achever la boucle
Next
 
Celle-ci devrait s'arrêter logiquement après avoir baptisé la Structure 1
Il ne reste plus qu'à insérer les 3 dernières lignes et les baptiser...
Il n'y aura pas de structure de contrôle if... end if.
Ce qui donne :

Code :
  1. Sub Test2()
  2. Rows(1).Insert
  3. iLastRow = Range("A65535" ).End(xlUp).Row
  4. iNbStructures = iLastRow / 4
  5. For j = iLastRow To 4 Step - 4
  6. Rows(j -3).Insert
  7. Rows(j -3).Insert
  8. Range("A" & j - 2).Value = "STRUCTURE " & iNbStructures
  9. iNbStructures = iNbStructures -1
  10. Next
  11. End Sub

Ok ?
 
Il ne te reste plus qu'à rajouter les 3 dernières lignes.
A+

n°12376
el_gringo
Profil : Jeune recrue
Posté le 04-04-2005 à 10:53:11  profilanswer
 

GALOPIN01 a écrit :

Bonsoir,
Dans ton exemple (feuille de départ)
Si j'insère une ligne avant la ligne 1 , je remarque que  chaque groupe de 4 lignes représente une future structure.
 
iLastRow = Range("A65535" ).End(xlUp).Row
iNbStructures = iLastRow / 4 (pour l'instant avec la ligne ajoutée iLastRow = 8)
Ok ?
 
On va donc attaquer une boucle basée sur cet exemple (en italique des commentaires)
For j = iLastRow To 4 Step (moins quelque chose...) j = 8
Rows(j -3).Insert cuisine est passé ligne 9
Rows(j -3).Insert couloir est passé ligne 9 mais j = toujours 8
Nous allons maintenant baptiser la ligne 6 :
Range("A" & j - 2).Value = "STRUCTURE " & iNbStructures
La prochaine structure sera décrémentée de 1 donc :
iNbStructures = iNbStructures -1
Pour passer de j = 8 à j = 4 le step est de - 4 on peut donc fixer le step et achever la boucle
Next
 
Celle-ci devrait s'arrêter logiquement après avoir baptisé la Structure 1
Il ne reste plus qu'à insérer les 3 dernières lignes et les baptiser...
Il n'y aura pas de structure de contrôle if... end if.
Ce qui donne :

Code :
  1. Sub Test2()
  2. Rows(1).Insert
  3. iLastRow = Range("A65535" ).End(xlUp).Row
  4. iNbStructures = iLastRow / 4
  5. For j = iLastRow To 4 Step - 4
  6. Rows(j -3).Insert
  7. Rows(j -3).Insert
  8. Range("A" & j - 2).Value = "STRUCTURE " & iNbStructures
  9. iNbStructures = iNbStructures -1
  10. Next
  11. End Sub

Ok ?
 
Il ne te reste plus qu'à rajouter les 3 dernières lignes.
A+


n°12377
el_gringo
Profil : Jeune recrue
Posté le 04-04-2005 à 10:55:46  profilanswer
 


 
Ok ca marche nikel. j'ai rajouté ces trois derniers lignes:
 
Rows(1).Insert
Rows(1).Insert
Range("A1" ).Value = "LISTES DES NOMS:"
 
Merci beaucoup pour ton aide!!!
 
En fait comment faire pour qu'il écrivent "structure" en gras taille 12?

n°12397
el_gringo
Profil : Jeune recrue
Posté le 04-04-2005 à 20:36:15  profilanswer
 

el_gringo a écrit :

Ok ca marche nikel. j'ai rajouté ces trois derniers lignes:
 
Rows(1).Insert
Rows(1).Insert
Range("A1" ).Value = "LISTES DES NOMS:"
 
Merci beaucoup pour ton aide!!!
 
En fait comment faire pour qu'il écrivent "structure" en gras taille 12?


 
Non c'est ok j'ai trouvé
Range("A" & j - 2).font.Bold = True
Range("A" & j - 2).font.Size = 14

n°17947
nabyl
Profil : Jeune recrue
Posté le 30-11-2006 à 10:35:53  profilanswer
 

bonjour,
 
s'il vvous plais j'ai besoin d'un programme macro pour pouvoir affiché l'heure est la date d'impression sur la page imprimé sou excel.
merçi d'avance

n°17948
nabyl
Profil : Jeune recrue
Posté le 30-11-2006 à 11:02:38  profilanswer
 

c urgent SVP


Aller à :
Ajouter une réponse