Aide sur du VBA

Résolu
Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012 - 17 juil. 2012 à 14:25
Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012 - 18 juil. 2012 à 16:35
Bonjour,

Je fais appel à vos lumiéres car aprés multiple recherche je n'y arrive pas

Je souhaiterais réalisé une macro.

Dans une feuille nommé "matériel".
- J'ai un tableau qui s'étend de la ligne A13:U100
- Je souhaiterais que lorsque je mets une croix dans la case "A COMMANDER" située dans la colonne D:E (fusionnée) l'information de la colonne A s’intègre dans une nouvelle feuille nommée 'Matériel en commande' dans la colonne C:F (fusionnée)
Pour information le tableau s'étend de la colonne C15:AH.

Je vous remercie par avance de l'aide que vous pourrez m'apporter

7 réponses

Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012
18 juil. 2012 à 16:35
C'est bon j'ai eu le code.

Je te remercie toi aussi pour ton aide

Je laisse le code au cas ou quelqu'un en aurais besoin

Sub Recopie()
Dim NbLig As Long
Dim WsC As Worksheet

  Application.ScreenUpdating = False
  Set WsC = ThisWorkbook.Sheets("Materiel en commande")
  WsC.Range("C15:C100").ClearContents

  NbLig = Range("A" & Rows.Count).End(xlUp).Row
  Range("A12:S" & NbLig).AutoFilter Field:=3, Criteria1:="X"
  If Application.Subtotal(103, Range("A12:A" & NbLig)) > 1 Then
    Range("A13:A" & NbLig).SpecialCells(xlCellTypeVisible).Copy WsC.Range("C15")
  End If
  Range("A12:S" & NbLig).AutoFilter
End Sub
 


Je vais archiver ce petit message. Mais je te garde sous le coude au cas où Car je sans que tu est une star du codage et du billard .
3
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
17 juil. 2012 à 16:15
Bonjour,

déjà pense à bien choisir la rubrique dans laquelle tu poste ton message... ça concerne du VBA.. pas du VB6.

Ensuite, qu'as tu commencé à faire ?
As tu commencé à écrire du code ?

En attendant voici quelques pistes :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' macro se déclenchant lorsque l'utiilsateur change de selection dans la feuille
' Target permet d'obtenir plusieurs infos.. telles que les coordonnées ou la valeur de la cellule
' selectionnée
Ligne = Target.Row
Colonne = Target.Column
Valeur = Target.Value
 'exemple : Si je suis dans la colonne 4 (D)
    If Colonne = 4 Then
        MsgBox (Cells(Ligne, "A").Value)
    End If
End Sub




Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012
17 juil. 2012 à 16:31
Désolé pour mettre tromper d'endroit.

Ma macro ce compil pas comme je le veux. Et a vrai dire je ne suis pas une star du VBA.
Avec l'enregistreur je suis passé par ça mais ça ne marche pas génial voir pas du tout.

En plus j'aimerais quand cliquant sur le bouton ça se mette à jour



Sub Macro5()
'
' Macro5 Macro
'

'
Sheets("Materiel").Select
Range("A13:S97").Select
ActiveWindow.SmallScroll Down:=-63
Range("A14").Select
Selection.Copy
Sheets("Materiel en commande").Select
Range("C15").Select
ActiveSheet.Paste
Sheets("Materiel").Select
Range("A15").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Materiel en commande").Select
Range("C16").Select
ActiveSheet.Paste
Sheets("Materiel").Select
Range("A18").Select
End Sub
0
Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012
17 juil. 2012 à 16:36
En faite j'aimerais que si je mets une croix dans la case de mon premier tableau.

Sheets("Materiel").Select
Range("A13:S97").Select
en case C13 que ça vienne compléter le début de mon tableau en Sheets("Materiel en commande").Select en C15

En faite le tableau c15 me sert de synthétiser les cases cocher dans la feuille materiel dans la colonne C qui s'étend de C13 : C 97.


Dans le cas ou en C15 la case n'est pas coché j'aimerais que que ça passe en C16 et qu'elle vienne incrémenter la première case du tableau puis si on trouve le "X" en C 25 que ça compléte la seconde ligne.

Et que je puisse mettre à jour au cas ou je rajoute de nouvelle case

Vois tu mon problème ou est ce que je m'exprime pluton mal.

Je te remercie quand meme de te pencher sur mon problème
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
17 juil. 2012 à 17:16
Oula en effet, les explications ne sont pas ton fort

Bon.. d'après ce que je comprend :
Tu as un bouton.
Lorsque tu cliques dessus, il parcoure ta feuille "Matériel" et lorsqu'il croise un ligne sur laquelle la colonne D contient un "X" alors il met à jour le tableau contenu dans ta feuille
"Materiel en commande" ?

Pour faire tout ça, il faut que tu étudie :
- les Boucles (For/Next par exemple)
- Les tests (IF.THEN..ELSE..END IF )
- La recopie des valeurs (soit par du copier/coller comme tu as déjà pu essayer de le faire dans ton code, soit pas la récupération des valeurs de cellules (cf : ".value" )

Je te laisse un peu chercher



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Push63 Messages postés 5 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 18 juillet 2012
18 juil. 2012 à 08:26
Je vais me mettre à pleurer

Je cherche mais la j'en peux plus et quand tu connais pas le vba enfin c'est comme tout ça devient chaud.

Voici l'URL ou le fichier est téléchargeable
[url=http://www.excel-downloads.com/forum/188768-vba-valeur-dun-tableau-dans-un-second-tableau.html].

Tout mon tableau est construit avec toutes les formules ...

A vrai dire si je n'ai pas la solution je vais abandonner car il m'a fait perdre trop de temps déjà.

La fatigue m'a fait trompé de forum

Merci quand même tu m'auras au moins répondu
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
18 juil. 2012 à 16:24
Sur l'autre site tu as bien commencé à traiter ta question.. ne t'arrêtes pas là !

Sub test()
For I = 13 To 100
Cell_traitee = Sheets("Materiel").Cells(I, "C")
If Cell_traitee = "X" Then
    MsgBox "La ligne " & I & " doit être traitée", vbOKOnly 'ligne a remplacer par la copie de la case correspondante
End If
Next
End Sub



Pour faire ton copier coller, tu peux : (dans ta boucle à la place de ta msgbox )
Selectionner la ligne (ou la cellule qui t'interesse) pour ensuite la copier/coller.
'exemple: 
Cells(i,"A").select
Selection.Copy
Sheets("Materiel en commande").Select 
Range("C16").Select ' a remplacer par la ligne ou coller 
ActiveSheet.Paste 
Sheets("Materiel").Select


Pour incrémenter automatiquement la N° de ligne ou coller tes données, tu peux rechercher une fonction qui te donne le N° de la dernière ligne d'une feuille.


NB : Plutot que d'utiliser du Copier/Coller, je passerai plutot par la récupération de la valeur (sauf si tu veux aussi la mise en forme..et non pas QUE la valeur de la cellule )

ce qui donnerait:
Sheets("Materiel en commande").range("C16").value=Sheets("Materiel").Cells(i,"A").value


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Rejoignez-nous