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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro Excel

n°1405197
jazzberri
Posté le 12-07-2006 à 08:57:49  profilanswer
 

Bonjour à tous...
J'aimerais avoir un petit coup de main pour effectuer une macro Excel qui devrait être toute simple pour vous, mais qui est à la limite de l'impossible pour moi .. :pt1cable:  
 
Explication:
Je possède un tableau Excel dans lequel il y a plein d'info. Je voudrai donc retrouver dans la colonne A toutes les cases avec inscrit "TY". Dès qu'un "TY" est trouvé, le doit récupérer la valeur associée en colonne B et mettre le tout dans une nouvelle feuille Excel pour n'avoir, qu'à la fin, le récapitulatif des valeurs de "TY".
 
Par ex:
En A13 et en A25  il y a des "TY". Associés en B13 et B26 de "1" et "3".Je voudrai donc que, dans une autre feuille, il y ai: - en A1: "TY"
                   - en B1: "1"
                   - en A10: "TY"
                   - en B10: "3"
           ...
 
Ceci est donc la première partie de ma réalisation. Mais il y a une suite:
Selon la valeur de "TY", dans mon fichier de départ, il faut que j'aille chercher d'autre info dans ce même fichier.
Ex:
si en B13 j'ai "1" (comme tout à l'heure), il faudrait que j'aille chercher les valeurs des cases A15 avec B15, A17 avec B17 et A19 avec B19 et C19. Et toute ces valeurs là, pouvoir les mettre dans la feuille récapitulative, à la suite de (A1 B1), c'est-à-dire à partir de A2.
 
Si il y a des choses pas très claires, dites-le moi et j'expliquerais plus en détail...
mais j'ai vraiment besoin de votre aide....
 
Merci d'avance
 
 :hello:  
 
 

mood
Publicité
Posté le 12-07-2006 à 08:57:49  profilanswer
 

n°1405211
jpcheck
Pioupiou
Posté le 12-07-2006 à 09:27:22  profilanswer
 

une boucle  
for i=1 to 120 '(exemple)
if range("A"&i).value = "TY" then
'ton tralala le caht ici
end if
next i
 
par la suite, tu fais un test avec range("B"&i).value et tu refais ton code selon ce que tu souhaites faire sur tes cellules...

n°1405230
jazzberri
Posté le 12-07-2006 à 09:38:06  profilanswer
 

ben pour faire claire, j'ai fai ça:
 
Sub Trier_les_infos()
'
' Trier_les_infos Macro
'
Dim pas As Integer
Dim val As Double
 
Worksheets("da_essais" ).Select
pas = 1
For pas = 1 To ActiveCell.SpecialCells(xlCellTypeLastCell).Row
While Range("A" & pas).Value <> "TY"
 
pas = pas + 1
If Range("A" & pas).Value = "TY" Then
             
            val = Range("B" & pas).Value
            Worksheets("Feuil3" ).Select
            Range("F14" ).Value = val
        Worksheets("da_essais" ).Select
         
End If
 
Wend
Next
 
End Sub
 
mais ça marche pas... Il m'inscris toujours les résultat dans la case F14 et la boucle est infini...

n°1405239
jpcheck
Pioupiou
Posté le 12-07-2006 à 09:48:04  profilanswer
 

ton code n'est pas des plus efficaces (mais qu'est-ce que je suis prétentieux des fois moi...)
 
 
Sub Trier_les_infos()
'
' Trier_les_infos Macro
'
Dim i As Integer 'pour les compteur, reste avec une seule lettre c plus facile
Dim val As Double
 
 
For i = 1 To 100 'fixe une limite arbitraire que tu sais que tu n'atteindras pas, comme ca tu évite un retour foireux de ta fonction
 
If Range("da_essais!A" & i).Value = "TY" Then
            val = Range("da_essais!B" & i).Value
          'la ligne d'après je la comprends pas trop, c'est normal que seul F14 bouge, mais si tu m'explique un eu plus ton histoire je peux essayer.  
         Range("Feuil3!F14" ).Value = val
        Worksheets("da_essais" ).Select
         
End If
Next
 
End Sub


Message édité par jpcheck le 12-07-2006 à 09:54:06
n°1405241
Paul Hood
Posté le 12-07-2006 à 09:48:15  profilanswer
 

Il est censé faire quoi ton
ActiveCell.SpecialCells(xlCellTypeLastCell).Row ?

n°1405250
DamienCYS
Posté le 12-07-2006 à 09:52:43  profilanswer
 

qqe modifs qui devrait améliorer
 
Sub Trier_les_infos()  
   Dim pas As Integer  
   Dim pas2 As Integer
   Dim val As Double  
 
   Worksheets("da_essais" ).Select  
   pas = 1  
   pas2=1
   While Range("A" & pas).Value <> ""  
 
      If Range("A" & pas).Value = "TY" Then  
         Worksheets("da_essais" ).Range("F"& pas2).Value  = Range("B" & pas).Value  
         pas2 = pas2+1            
      End If  
 
   Loop  
 
End Sub  

n°1405263
jazzberri
Posté le 12-07-2006 à 10:03:02  profilanswer
 

le "ActiveCell.SpecialCells(xlCellTypeLastCell).Row" est censé détecté la dernière ligne écrite de mon tableau pour éviter que la boucle n'aille jusqu'à 100000...
Ainsi, ça peut s'adapter, je pense, à un tableau qui fait 30 ligne, comme un ki en fai 500.

n°1405267
jazzberri
Posté le 12-07-2006 à 10:04:18  profilanswer
 

damienCYS, pourquoi tu mets un Loop à la fin alos qu'il n'y a pas de Do?

n°1405271
Paul Hood
Posté le 12-07-2006 à 10:06:39  profilanswer
 

wend à la place de loop
ou Do devant while

n°1405272
jazzberri
Posté le 12-07-2006 à 10:07:19  profilanswer
 

jpcheck, ton programme marche et ça c super cool... Mais comment fait tu pour qu'il évite de mettre tous les résultat dans F14.
ex: le premier dan A1, le deuxième dans A10, troisième A20....

mood
Publicité
Posté le 12-07-2006 à 10:07:19  profilanswer
 

n°1405275
jazzberri
Posté le 12-07-2006 à 10:09:14  profilanswer
 

Paul Hood, ok, mais ni "pas" ni "pas2" s'incrémente...

n°1405278
Paul Hood
Posté le 12-07-2006 à 10:12:43  profilanswer
 

pas = pas+1 juste avant la fin de la boucle (wend ou loop)

n°1405286
DamienCYS
Posté le 12-07-2006 à 10:19:59  profilanswer
 

effectivement j'ai oublié le Do

n°1405298
jazzberri
Posté le 12-07-2006 à 10:35:31  profilanswer
 

merci beaucoup à tous...
La première partie de mon programme marche.
Je vais essayé de me débrouiller pour la suite, mais c pas gagné....
rester à vos clavier.. lol
 
encore merci

n°1405300
jpcheck
Pioupiou
Posté le 12-07-2006 à 10:39:02  profilanswer
 

tu peux mettre un autre compteur de type j
avec j=0 au depart
lorsque tu as la valeur "TY" tu incrémentes ton j et  tu mets  
j=j+1      
Range("da_essais!F"& j*10).Value  = Range("B" & i).Value  
tu auras alors tes résultats progresssivment dans F10, F20, F30...


Message édité par jpcheck le 12-07-2006 à 10:46:33
n°1405302
jazzberri
Posté le 12-07-2006 à 10:41:09  profilanswer
 

oui c'est ce que j'ai fait.
merci


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

  macro Excel

 

Sujets relatifs
Recherche Tuto, cours macro excelVBA Excel - macro création de feuille
graphique excel en macroexcel - macro a executer sur chaque ligne d'une feuille
difficultés à manipuler les dates/heures pr Macro ExcelHelp ! Macro excel pour importer données de differents onglets
lancer une macro complementaire excel via script vbsMacro pour graphique excel
Macro Excel ExecutionMacro Excel
Plus de sujets relatifs à : macro Excel


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