VBA - Macro pour selectionner une ligne sous conditions
Résolu/Fermé
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
-
30 juin 2014 à 10:50
jeannuslanus Messages postés 15 Date d'inscription lundi 30 juin 2014 Statut Membre Dernière intervention 5 août 2014 - 1 juil. 2014 à 09:20
jeannuslanus Messages postés 15 Date d'inscription lundi 30 juin 2014 Statut Membre Dernière intervention 5 août 2014 - 1 juil. 2014 à 09:20
A voir également:
- Vba selectionner une ligne en fonction d'une valeur
- Fonction si et - Guide
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne dans une cellule excel - Guide
- Test performance pc en ligne - Guide
7 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 juin 2014 à 11:04
30 juin 2014 à 11:04
Bonjour,
Et tu les copies où ?
Et tu les copies où ?
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 11:18
30 juin 2014 à 11:18
je les copie en transposé sous forme de liste dans l'onglet "saisie" à partir de la cellule C2 !
Merci beaucoup !
Merci beaucoup !
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 11:57
30 juin 2014 à 11:57
c'est genial merci beacoup ! par contre le copier coller se fait en ligne, comment modifier le programme pour faire plutot un "couper-coller transposé" où la ligne coupée disparait?
ca serait vraimet super !!!! :D
ca serait vraimet super !!!! :D
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 juin 2014 à 13:54
30 juin 2014 à 13:54
J'avais mal lu, excuse moi
je t'ai fait une macro mais tu aurais le m^me résultat plus simplement par formule avec RECHERCHEV
si tu ne connais cette bê^te là
https://www.commentcamarche.net/faq/s/recherchev
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
devient
Sheets("saisie").Range("C3:C14") = Application.Transpose(.Range(.Cells(Lig, "B"), .Cells(Lig, "M")))
je t'ai fait une macro mais tu aurais le m^me résultat plus simplement par formule avec RECHERCHEV
si tu ne connais cette bê^te là
https://www.commentcamarche.net/faq/s/recherchev
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
devient
Sheets("saisie").Range("C3:C14") = Application.Transpose(.Range(.Cells(Lig, "B"), .Cells(Lig, "M")))
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 14:40
30 juin 2014 à 14:40
c'est incroyable ça marche magnifiquement bien !!
merci de tout coeur !!
une dernière chose s vous avez encore quelques minutes à m'accorder:
j'ai créé une macro qui fonctionne très bien, le principe c'est que dans la feuille "saisie" on peut ajouter une ligne à la suite du tableau "suivi regnego groupe".
Grâce au programme "copie" que vous venez de me donner, je peux maintenant remplir les plages de "saisie" simplement à partir de la donnée que je rentre dans la cellule C2 que la macro va rechercher dans la feuille "suivi renego groupe".
l'idée serait de pouvoir supprimer la ligne si la valeur de C2 elle existe déjà dans la feuille "suivi renego groupe" pour "enregistrer" les données que j'entre dans la feuille "saisie".
serait il alors possible de modifier le programme suivant pourfaire cela? est-ce suffisamment clair pour vous ?
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
en clair il faudrait ajouter une alternative du style "ce programme s'applique quoi qu'il arrive mais si la valeur de la cellule C2 de la feuille "saisie" apparait dans la collonne A de la feuille C2, alors il faut supprimer la ligne correspondante".
Merci beaucoup d'avance !
merci de tout coeur !!
une dernière chose s vous avez encore quelques minutes à m'accorder:
j'ai créé une macro qui fonctionne très bien, le principe c'est que dans la feuille "saisie" on peut ajouter une ligne à la suite du tableau "suivi regnego groupe".
Grâce au programme "copie" que vous venez de me donner, je peux maintenant remplir les plages de "saisie" simplement à partir de la donnée que je rentre dans la cellule C2 que la macro va rechercher dans la feuille "suivi renego groupe".
l'idée serait de pouvoir supprimer la ligne si la valeur de C2 elle existe déjà dans la feuille "suivi renego groupe" pour "enregistrer" les données que j'entre dans la feuille "saisie".
serait il alors possible de modifier le programme suivant pourfaire cela? est-ce suffisamment clair pour vous ?
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
en clair il faudrait ajouter une alternative du style "ce programme s'applique quoi qu'il arrive mais si la valeur de la cellule C2 de la feuille "saisie" apparait dans la collonne A de la feuille C2, alors il faut supprimer la ligne correspondante".
Merci beaucoup d'avance !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 juin 2014 à 14:50
30 juin 2014 à 14:50
est-ce suffisamment clair pour vous ?
Absolument pas
Absolument pas
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 14:58
30 juin 2014 à 14:58
il faut simplement rajouter à mon programme cette fonction:
Si jamais la valeur de la cellule C2 de la feuille "saisie" existe dans la colonne "suivi renego groupe", alors il faut supprimer la ligne correspondante à la cellule qui se trouve dans "suivi renego groupe"
Si jamais la valeur de la cellule C2 de la feuille "saisie" existe dans la colonne "suivi renego groupe", alors il faut supprimer la ligne correspondante à la cellule qui se trouve dans "suivi renego groupe"
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 juin 2014 à 15:00
30 juin 2014 à 15:00
Alors à quoi sert ce que je t'ai proposé ?
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 15:11
30 juin 2014 à 15:11
l'objectif est de mettre à jour des données en passant par une feuille de saisie: on recherche des informations qui sont dans le tableau "suivi groupe renego", à partir d'une donnée que l'on entre dans la feuille de saisie et elles s'affichent dans la feuille de saisie , on les mofidie et elles s'enregistrent dans le tableau "suivi groupe renego". Pour qu'elles s'enregistrent j'ai fait ce programme :
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
Mais les valeurs s'enregistrent à la suite comme des nouvelles valeurs sans écraser les précédentes. Je voudrais donc qu'elles continuent de s'enregistrer à la suite en supprimant les anciennes lignes..
Pöur cela, il faudrait compléter le programme ci dessus avec une fonction qui supprime la ligne où la donnée C2 (de la feuille de saisie) apparait dans la collonne A (de la feuille "suivi renego groupe")
Je sais c'est assez complexe, mais mon boss n'a pas compris que j'étais en stage de com et pas de VBA ...
si vous réussissez à comprendre ce serait vraiment génial !!
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
Mais les valeurs s'enregistrent à la suite comme des nouvelles valeurs sans écraser les précédentes. Je voudrais donc qu'elles continuent de s'enregistrer à la suite en supprimant les anciennes lignes..
Pöur cela, il faudrait compléter le programme ci dessus avec une fonction qui supprime la ligne où la donnée C2 (de la feuille de saisie) apparait dans la collonne A (de la feuille "suivi renego groupe")
Je sais c'est assez complexe, mais mon boss n'a pas compris que j'étais en stage de com et pas de VBA ...
si vous réussissez à comprendre ce serait vraiment génial !!
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 15:14
30 juin 2014 à 15:14
mais rassurez vous, ce que vous m'avez donné est déjà super utile !!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 30/06/2014 à 17:05
Modifié par michel_m le 30/06/2014 à 17:05
Bin, c'est la m^me dans l'autre sens :o)
Option Explicit
'------
Sub enregistrer()
Dim Valeur, Lig As Integer
Valeur = Sheets("saisie").Range("C2")
With Sheets("Suivi Renego Groupe")
Lig = .Columns("A").Find(Valeur, , , , , xlPrevious).Row
Range(.Cells(Lig, "B"), Cells(Lig, "N")) = Application.Transpose(Sheets("saisie").Range("C3:C15"))
End With
End Sub
jeannuslanus
Messages postés
15
Date d'inscription
lundi 30 juin 2014
Statut
Membre
Dernière intervention
5 août 2014
30 juin 2014 à 17:41
30 juin 2014 à 17:41
merci c'est super !! par contre j'ai un message d'erreur concernant la ligne Range(.cells.....etc est ce que vous savez pourquoi?
merci encore ca m'aide vraiment !
merci encore ca m'aide vraiment !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 30/06/2014 à 11:39
Modifié par michel_m le 30/06/2014 à 11:39
Option Explicit
'---
Sub copier()
Dim Valeur As Variant, Lig As Integer
Valeur = Sheets("saisie").Range("C2")
With Sheets("suivi renego group")
On Error GoTo vide
Lig = .Columns("A").Find(Valeur, , , , , xlPrevious).Row
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
Exit Sub
vide:
MsgBox Valeur & " inconnu", vbCritical
End With
End Sub
Michel