Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2941 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sur une programation vba

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme sur une programation vba

n°906154
jule-boss5​2
Posté le 23-11-2004 à 23:02:50  profilanswer
 

bonsoir,
j'ai un souci pour faire une programation, je souhaiterais programmer un tableau dans la feuille 1 qui renvoie les donnees dans differentes cellules de la feuille 2. actuellement ma programation utulise le programme que le dernier inscrit soit pris en compte, mais je ne peut pas revenir en arriere, pour etre plus clair voici ma prog :
Private Sub CommandButton1_Click()  
Dim L As Long, Dernier  
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 1).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(4, 2).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 10).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(6, 2).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 9).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(7, 2).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 8).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(8, 8).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 7).Value  
Exit For  
 
Sheets("Identification" ).PrintOut  
Sheets("DOCY011C" ).PrintOut  
 
End If  
Next L  
Worksheets("Identification" ).Cells(2, 2).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 6).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(4, 8).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 11).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(3, 8).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 12).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(5, 8).Value = Dernier  
Sheets("Identification" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 1).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(7, 6).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 9).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(9, 6).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 7).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(3, 3).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 10).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(9, 2).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 6).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(1, 8).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 4).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(7, 2).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 11).Value  
Exit For  
End If  
Next L  
Worksheets("DOCY011C" ).Cells(5, 2).Value = Dernier  
Sheets("DOCY011C" ).Select  
 
Sheets("Identification" ).PrintOut  
Sheets("DOCY011C" ).PrintOut  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 4).Value  
Exit For  
End If  
Next L  
Worksheets("fiche recap" ).Cells(868, 2).Value = Dernier  
Sheets("fiche recap" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 12).Value  
Exit For  
End If  
Next L  
Worksheets("fiche recap" ).Cells(868, 1).Value = Dernier  
Sheets("fiche recap" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 11).Value  
Exit For  
End If  
Next L  
Worksheets("fiche recap" ).Cells(868, 3).Value = Dernier  
Sheets("fiche recap" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 7).Value  
Exit For  
End If  
Next L  
Worksheets("fiche recap" ).Cells(868, 5).Value = Dernier  
Sheets("fiche recap" ).Select  
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 3).Value  
Exit For  
End If  
Next L  
Worksheets("fiche recap" ).Cells(868, 7).Value = Dernier  
Sheets("fiche recap" ).Select  
End Sub  
voila cette programtion est assez longue peut on la simplifier?, sinon mon soucis c soit de cree un autre bouton qui reprend les meme parametres mais que je puisse choisir la ligne(ou un nemro que j'aurais atribue)et que les donnees(les differents colonne) de la ligne trouve se renvoie au differents documents a leur emplacement.
Ou alors completer cette macro pour le faire?
Merci d'avance pour votre aide, je suis pas tres cale en prog je fais juste ca pour mon boulot.
cordialement.
julien.


---------------
julien.
mood
Publicité
Posté le 23-11-2004 à 23:02:50  profilanswer
 

n°906477
Profil sup​primé
Posté le 24-11-2004 à 12:50:49  answer
 

tu t'es en effet bien compliqué la vie ( en tout cas , il y a plus rapide que de tester chaque cellules )  
 
Selection.End(XlUp) permet d'atteindre la limite de la liste en partant du bas vers le haut ( la limite vide/non vide pour etre plus précis )
 
Selection.End(XlDown) fait la meme chose en partant du haut vers le bas
 
idem avec XlRight et XlLeft
 
sheet("Reception" ).cells(65236,1).select  
Selection.End(xlUp).Select  
Sheet("Identification" ).cells(4,2)=Activecell  
 
sheet("Reception" ).cells(65236,10).select  
Selection.End(xlUp).Select  
Sheet("Identification" ).cells(6,2)=Activecell  
 
sheet("Reception" ).cells(65236,9).select  
Selection.End(xlUp).Select  
Sheet("Identification" ).cells(7,2)=Activecell
 
etc ...


Message édité par Profil supprimé le 24-11-2004 à 12:57:42
n°908031
jule-boss5​2
Posté le 25-11-2004 à 22:07:07  profilanswer
 

bonsoir,
desole j'ai essaye ta solution juste aujourd'hui, et malheureusement je n'arrive pas a la faire fonctionner a chaque fois que je retire IF et for ca m'indique que il y a une erreur sur le bouton.
comment faire?
Merci d'avance pour ton aide.
cordialement.
julien.


---------------
julien.
n°908039
Profil sup​primé
Posté le 25-11-2004 à 22:16:31  answer
 

tu doit remplacer chacun de tes blocs :
 
For L = 65236 To 262 Step (-1)  
If Worksheets("Reception" ).Cells(L, 1).Value <> "" Then  
Dernier = Worksheets("Reception" ).Cells(L, 1).Value  
Exit For  
End If  
Next L  
Worksheets("Identification" ).Cells(4, 2).Value = Dernier  
Sheets("Identification" ).Select  

 
par  
 
sheet("Reception" ).cells(65236,1).select  
Selection.End(xlUp).Select  
Sheet("Identification" ).cells(4,2)=Activecell  

 
soit 3 lignes au lieu de 8 et une rapidité d'execution plus importante.
 
-la premiere ligne selectionne la derniere cellule de ta feuille "Reception" ( pour la colonne 1 dans l'exemple)
-la deuxieme ligne envoie la selection vers "le haut" a la premiere cellule non-vide rencontrée.
-la troisieme ligne place la valeur de la cellule trouvée et selectionnée dans la feuille "identification" ( ici en 4,2 )


Message édité par Profil supprimé le 25-11-2004 à 22:18:31
n°908054
jule-boss5​2
Posté le 25-11-2004 à 22:30:23  profilanswer
 

ok,
je vient de reesayer et maintenant il me souligne en bleu "Sheet" et affiche comme message que la fonction ou Sub n'est pas definit?
qu'elle est ce message
Merci
julien.


---------------
julien.
n°908064
Profil sup​primé
Posté le 25-11-2004 à 22:39:36  answer
 

oui c'est Sheets et non Sheet , comme je l'ai indiqué .  ;)

n°908075
jule-boss5​2
Posté le 25-11-2004 à 22:48:44  profilanswer
 

ok Merci pour ton aide cela fonctionne.
maintenant je souhaiterais faire une autre chose avec le meme tableau, ca serait de pouvoir faire une recherche par rapport a ma colonne H et apres avoir trouver la cellule c'est qu'il renvoye chaque cellule de la ligne dans mets autres documents? es ce que cela est faisable?
Merci pour ton aide car c gentil de te pencher sur mes soucis.
julien.


---------------
julien.
n°908084
Profil sup​primé
Posté le 25-11-2004 à 22:56:58  answer
 

si j'ai bien saisi, tu veut rechercher une valeur V dans la colonne H , puis reprendre les valeurs qui se trouvent pres de V, sur la meme ligne et les recopier ailleurs ?
 
 

L=0:V=100 ' si 100 est la valeur cherchée bien sur
Do
L=L+1
X=sheets("Reception" ).cells(L,8)
 
If X=V then
 For T=8 to 18
 Sheets("Identification" ).cells(1,T-7)=Sheets("Reception" ).Cells(L,T)
 Next T
End if
 
If X="" then exit do
Loop

 
ici on va chercher la valeur V dans la colonne H (colonne 8), une fois trouvée on utilise un For Next pour recopier les valeurs  de la colonne H, ligne L à la colonne R, ligne L  dans la feuille "Identification" , colonne A à J, ligne 1.
 
le For Next ne prend que 10 valeurs ici ( 8 à 18 ) mais tu peut le remplacer par un Do Loop avec condition de sortie si vide ,si tu ne connait pas le nombre de cellules remplies dans la ligne ou se trouve la valeur V


Message édité par Profil supprimé le 25-11-2004 à 23:02:59
n°908090
jule-boss5​2
Posté le 25-11-2004 à 23:02:02  profilanswer
 

oui c'est ca, c pour pouvoir reéditer un document qui serait perdu et que je n'ai pas a tous reprrendre( car chez nous bcp de papier se perd).
merci.


---------------
julien.
n°908098
jule-boss5​2
Posté le 25-11-2004 à 23:09:28  profilanswer
 

je peut faire ta programmation avec un autre bouton car comme cela j'aurais un bouton pour faire le dernier document rempli et autre bouton qui va me permettre de recherche un critere et reédite celui ci. (c'est pour des reclamtions clients ex: je recoit une reclamation aujourd'hui avec le 1 er bouton ca me permet de l'edite puisque j'aurais rempli mon tableau, et je fais ca a chaque fois que j'en recoi une, mais si dans une semaine la feuille ce perd avec le deuxieme bouton je pourrais la reédité).
Merci bcp pour ton aide car je ne suis pas tres fort en prog.
julien


---------------
julien.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sur une programation vba

 

Sujets relatifs
Probleme erreur TomcatProblème de lecture hibernate.cfg.xml à cause dtd
probleme script perl[HTML] Problème tout bête à propos d'un tableau.
[jsp]problème à la compilation : class file contains wrong class[lingo director] problème de cursor
Problème d'ouverture d'url avec fopen()Problème preg_replace() et chiffres, numéros
Probleme d'URL REWRITINGprobleme sujet programation excel........help
Plus de sujets relatifs à : probleme sur une programation vba


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR