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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro VB

n°1079743
atmakefka
Posté le 11-05-2005 à 16:29:18  profilanswer
 

salut à tous :)  
 
je cherche a écrire une macro sous excel qui doit faire la chose suivante : j´ai une feuille excel avec une colonne A et une B, et x nombre de ligne  
 
je veux que ma macro me pemette de trouver en fonction de Ax donné, ce qu´il y a a coté en Bx  
 
autrement dit me donner Bx pour tout Ax donné  
je sais pas trop comment m´y prendre..c´est une function? une sub ?   :??:  
 
merci d'avance! :)

mood
Publicité
Posté le 11-05-2005 à 16:29:18  profilanswer
 

n°1079827
fusion_sad​am
:D
Posté le 11-05-2005 à 17:26:25  profilanswer
 

cells(LIGNE, COL) te renverra le contenu de la énieme ligne et énieme colonne
 
si tu veux la colonne suivante : cells(LIGNE, COL +1)

n°1079921
atmakefka
Posté le 11-05-2005 à 18:21:52  profilanswer
 

merci c'est deja ça :)

n°1079928
fusion_sad​am
:D
Posté le 11-05-2005 à 18:27:05  profilanswer
 

ben je vois pas trop ce que tu veux faire exactement
mais essaye deja de faire une macro et dis nous où ca plante :)

n°1079952
atmakefka
Posté le 11-05-2005 à 18:56:46  profilanswer
 

ben je vais donner un exemple : si par exemple dans A1 il y a ecrit "nom" et dans B1 "prenom", je veux une macro qui me donne "prenom" quand je tape "nom"

n°1080126
atmakefka
Posté le 11-05-2005 à 20:59:16  profilanswer
 

au fait VBA, pas VB

n°1080416
AlainTech
Pas trouvé? Cherche encore!
Posté le 11-05-2005 à 23:53:49  profilanswer
 

Solution pur VBA (sans utiliser les fonctionalités d'Excel):

Sub prenom()
  Dim rNoms As Range
  Dim sNom As String
  Dim vI As Variant
  Set rNoms = Range([A1], [A1].End(xlDown))
  sNom = InputBox("Nom?", "Recherche prénom" )
  For Each vI In rNoms
    If UCase(vI) = UCase(sNom) Then
      MsgBox (vI.Cells(1, 2))
      Exit For
    End If
  Next vI
End Sub


Pas de gestion des erreurs (si le nom n'existe pas, pas de résultat)
Pas de gestion des doublons (Marc Dupont et Pierre Dupont)


Message édité par AlainTech le 11-05-2005 à 23:54:24

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1080424
atmakefka
Posté le 12-05-2005 à 00:00:40  profilanswer
 

Merci :)
j'avais écris ceci :
 
Dim Compteur As Integer, prenom As String
Dim Cel As Range
Set Cel = Range("A1" )
 
Compteur = 1
 
 
Do While Cel.Offset(Compteur) <> ""
    If Cel.Offset(Compteur) = "nom" Then
        Exit Do
    End If
 
    Compteur = Compteur + 1
 
Loop
 
prenom = Cel.Offset(Compteur, 1)
MsgBox "Le prenom de nom est " & prenom
 
-----------------------
le probleme est que je dois ecrire dans ma macro le nom a la place de "nom", puis l'executer pour qu'elle m'affiche le prenom dans une msgbox..or je veux saisir directement sous excel le nom dans une cellule, et qu'une autre cellule me donne le prénom..comment je fais?? :(


Message édité par atmakefka le 12-05-2005 à 00:07:10
n°1080481
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-05-2005 à 08:13:39  profilanswer
 

Dans ce cas, les formules d'Excel font parfaitement l'affaire.
Imaginons que tu tapes le nom en D1 et que tu veuilles le prénom en E1, dans la cellule E1 tu mets cette formule:
 
=RECHERCHEV(D1;A:B;2;FAUX)   (Sur Excel en français)
=VLOOKUP(D1;A:B;2;FALSE)       (Excel en anglais)


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1080490
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-05-2005 à 08:35:47  profilanswer
 

Mais, si tu tiens absolument à faire du VBA, tu peux mettre ce code dans ta FEUILLE:
 


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Select Case Target.Address
    Case "$D$1"
      [E1] = Prenom([D1])
  End Select
End Sub
 
Function Prenom(sNom As String) As String
  Dim rNoms As Range
  Dim vI As Variant
  Set rNoms = Range([A1], [A1].End(xlDown))
  For Each vI In rNoms
    If UCase(vI) = UCase(sNom) Then
      Prenom = vI.Cells(1, 2)
      Exit For
    End If
  Next vI
  If Prenom = "" Then
    MsgBox ("Pas trouvé" )
  End If
End Function


 
Mêmes conditions que plus haut et pas de gestion des erreurs.
 
Edit --> Ajout du msgbox si pas trouvé


Message édité par AlainTech le 12-05-2005 à 08:40:57

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
mood
Publicité
Posté le 12-05-2005 à 08:35:47  profilanswer
 

n°1081296
atmakefka
Posté le 12-05-2005 à 18:38:26  profilanswer
 

Merci ! :)

n°1081864
atmakefka
Posté le 13-05-2005 à 10:05:14  profilanswer
 

Rebonjour,  
j'ai encore des problèmes avec un code qui doit faire quelque chose de plus compliqué. Je dois extraire dans une nouvelle feuille le journal d'un utilisateur particulier donné (toutes les colonnes en fait). problème, certains utilisateurs apparaissent plusieurs fois. du coup avec mes essais de code je selectionnai qu'une seul ligne de ces utilisateurs, et je n'arrive pas de toutes façons a copier dans une nouvelle et unique feuille , ca m'en cree une nouvelle a chaque fois. apres il y a des problemes de saut de ligne, et j'en passe:(
la feuille excel ce presente comme ceci
 
http://img95.echo.cx/img95/6123/sanstitre5yr.jpg
 
En esperant que quelqu'un pourra m'aider.. merci
 
 

Code :
  1. Sub extraire_dans_une_nouvelle_feuille_le_journal_d_un_utilisateur_particulier_donné()
  2. Dim nom_utilisateur As Range
  3. Dim login
  4. Dim login_demandé
  5. Set nom_utilisateur = Range([F2], [F2].End(xlDown))
  6. login_demandé = InputBox("Nom d'utilisateur ?" )
  7. For Each login In nom_utilisateur
  8.     If login = login_demandé Then
  9.        login.EntireRow.Select
  10.        Selection.Copy
  11.        Sheets.add
  12.        => ???????
  13.         ElseIf login <> login_demandé Then 
  14.               MsgBox ("Ce nom d'utilisateurou ce login) n'existe pas." )
  15.         Exit For
  16.     End If
  17. Next login
  18. End Sub

n°1082086
AlainTech
Pas trouvé? Cherche encore!
Posté le 13-05-2005 à 12:17:23  profilanswer
 

Ce que je t'ai fait ne correspond pas tout à fait à ce que tu demandais.
En réalité, ça en fait plus.
Je prends toutes les lignes de ta feuille et j'en crée une feuille par utilisateur.
Vois si tu peux en extraire qqch d'utile pour toi.
J'ai nommé la feuille d'origine "Data".

Sub Extract()
  Dim bSheetExists As Boolean  
  Dim iNextRow As Long
  Dim rActivity As Range
  Dim rHeading As Range
  Dim vI As Variant
  Dim vJ As Variant
  Sheets("Data" ).Activate  ' Activer la feuille dont les données vont être
                           ' extraites (feuille "source" )
  Set rActivity = Range([A2], [A2].End(xlDown))  ' Créer un range de la première
                                                 ' colonne
  Set rHeading = Rows(1)  ' Créer un range de l'entête pour pouvoir le copier
  For Each vI In rActivity  ' Parcourir toutes les cellules de la 1e colonne
    bSheetExists = False  ' La feuille recherchée n'est pas encore trouvée
    For Each vJ In Worksheets  ' Parcourir toutes les feuilles
      If vJ.Name = vI.Cells(1, 6) Then  ' Si le nom de la feuille = le contenu de la
                                        ' cellule en 6e colonne de la ligne
        bSheetExists = True  ' La feuille est trouvée
        Exit For             ' et sortie de la boucle de recherche  
      End If
    Next vJ  ' Feuille suivante (si pas eu de sortie avant)
    If bSheetExists Then  ' Si la feuille a été trouvée
      vJ.Activate         ' Activer cette feuille    
    Else                                               ' Si elle n'a pas été trouvée  
      Worksheets.Add After:=Worksheets(Worksheets.Count) ' En créer une et la mettre
                                                         ' derrière les autres
      ActiveSheet.Name = vI.Cells(1, 6)  ' Lui donner comme nom le contenu de la
                                         ' cellule de la 6e colonne de la ligne
                                         ' parcourue par la boucle  
      rHeading.Copy ([A1])  ' Y copier l'entête
    End If
    iNextRow = [A1].SpecialCells(xlLastCell).Row + 1  ' Déterminer la 1ere ligne
                                                      ' vide de la feuille trouvée
                                                      ' ou créee
    vI.EntireRow.Copy (Cells(iNextRow, 1))         ' Y copier la ligne de la feuille
                                                   ' source où la boucle est arrivée
  Next vI  ' Ligne "source" suivante  
End Sub


 
Edit --> Ajout des commentaires


Message édité par AlainTech le 14-05-2005 à 10:35:14

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1082089
atmakefka
Posté le 13-05-2005 à 12:19:55  profilanswer
 

merci :) je vais voir

n°1082092
atmakefka
Posté le 13-05-2005 à 12:25:11  profilanswer
 

ça marche, mais ca le fait directement. je vais modifier pour que ça soit pour un utilisateur donné. encore merci


Message édité par atmakefka le 13-05-2005 à 12:31:48
n°1082094
atmakefka
Posté le 13-05-2005 à 12:25:28  profilanswer
 

oups double post :(


Message édité par atmakefka le 13-05-2005 à 12:31:03
n°1082107
AlainTech
Pas trouvé? Cherche encore!
Posté le 13-05-2005 à 12:36:00  profilanswer
 

C'est bien ce que je t'avais dit: ça en fait plus que tu ne demandais.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1082112
atmakefka
Posté le 13-05-2005 à 12:42:43  profilanswer
 

Oui mais faut que j'y arrive par moi même, c'est pour ça, et comprendre aussi ;)

n°1082822
atmakefka
Posté le 13-05-2005 à 22:31:21  profilanswer
 

Une derniere chose stp, tu pourrais expliquer un peu le prog ? ou commenter ? je ne comprends pas tout :(

n°1083029
AlainTech
Pas trouvé? Cherche encore!
Posté le 14-05-2005 à 10:36:28  profilanswer
 

Voilà, j'ai mis les commentaires.
N'hésite pas à poser des questions sur ce que tu ne comprends pas.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1083262
atmakefka
Posté le 14-05-2005 à 16:05:06  profilanswer
 

merci!
désolé de t'avoir demandé ça mais c'est parceque je n'arrivais pas a modifier le code pour que ce soit pour un utilisateur donné
je vais voir ça, merci :)

n°1083278
atmakefka
Posté le 14-05-2005 à 16:22:49  profilanswer
 

arf j'y arrive pas je suis nul :(

n°1083658
atmakefka
Posté le 14-05-2005 à 22:29:22  profilanswer
 

je demande encore votre aide :(

n°1084181
atmakefka
Posté le 15-05-2005 à 14:44:21  profilanswer
 

bon j'ai reussi, j'aurai peut etre besoin d'aide plus tard encore  
merci :)

n°1084326
atmakefka
Posté le 15-05-2005 à 16:54:48  profilanswer
 

edit


Message édité par atmakefka le 24-05-2005 à 10:14:17
n°1085756
atmakefka
Posté le 16-05-2005 à 16:58:20  profilanswer
 

:(

n°1095185
pepette547​10
Posté le 24-05-2005 à 16:05:56  profilanswer
 

lol. Tu ne serais pas en deug MISASHS en 1ere année?

n°1095222
AlainTech
Pas trouvé? Cherche encore!
Posté le 24-05-2005 à 16:28:18  profilanswer
 

J'ai dans l'idée que vous devez vous connaître.
Mêmes posts sur plusieurs forums...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
mood
Publicité
Posté le   profilanswer
 


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

  Macro VB

 

Sujets relatifs
Macro formule cellule #NOM?...Macro pour trouver et recopier toutes les lignes ayant une valeur com
[RESOLU] Macro - copie de fichierliaison macro
HELP !! Traduire une Macro de WORD à EXCELModifier programme, macro?
Fusion word depuis une Macro ExcelLancer macro Word
Lancer une macro après modification d'un tableau croisé?Excel / Word macro à lancer et Textbox
Plus de sujets relatifs à : Macro VB


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