XL 2010 Comment copier/coller sur autre onglet les lignes présentant des valeurs précises ?

waskar

XLDnaute Nouveau
Bonjour,

je voudrais savoir si certains d'entre vous ont des suggestions de tuto en ligne qui me permettraient, progressivement, d'acquérir le savoir-faire pour réaliser la commande suivante.

J'ai fais un peu le tour du Web, la demande similaire revient souvent, mais je constate premièrement que les formules varient, sans doute normal puisque il y a toujours plusieurs chemins pour un même résultat, deuxièmement que je ne comprends rien au code, et ça me gêne d'être "aveugle" au code que je voudrais implanter.

Je donne un explicatif de la formule que souhaiterais construire, pour que vous puissiez m'orienter plus finement sur tel ou tel tuto adapté à mes besoins
Je souhaite que le système
1. cherche non pas dans toutes les lignes de la feuille, mais dans les lignes qui ont un contenu dans telle ou telle colonne. (dans mon esprit, cela permettrait d'éviter que le système tourne pour rien à vérifier des lignes vides)
2. Dans cette plage limitée, le système doit trouver dans une colonne précise si une valeur est présente.
3. Si cette valeur est rpésente, le système doit copier toute la ligne à laquelle la cellule appartient, et la coller dans un autre onglet du classeur excel, mais en la collant uniquement à la suite des lignes déjà occupées (dans mon esprit, éviter ainsi qu'une seconde ligne copiée/collée n'écrase la première ligne copiée/collée).


J'ai bien compris qu'il faut que je fasse intervenir la fonction conditionnelle SI sinon et le principe de boucle, je crois que c'est assez simple à mettre en place une fois les fondamentaux acquis.
Donc si certains veulent me suggérer un "parcours d'apprentissage" adapté via tel ou tel tuto, ou me filer ne serait-ce qu'un morceau de code pour me permettre de le décortiquer pour aller plus loin, je les remercie.
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Bonjour et Bienvenue sur XLD,
un fichier exemple est mieux qu'un long discours.
Merci de préparer un fichier Excel, y mettre quelques données (bidons bien sûr), bien poser la question, et mettre le résultat escompté avec une couleur différente, pour que l'on puisse bien saisir ta demande et te donner la bonne formule.


Cordialement
 

waskar

XLDnaute Nouveau
Pour le fichier, c'est fait.

Après, je vous invite à me dire ce qu'il y a d'obscur dans mon premier post. Je cherche à copier/coller dans un autre onglet des lignes présentant une valeur précise dans une cellule. Dit en d'autres termes, je cherche à faire ce que je décris dans le numéro 1 puis 2 puis 3 de mon premier post.
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Bonjour waskar, R@chid,

Ce genre de problème nécessite une procédure VBA, voyez le fichier joint.

Clic droit sur l'onglet de la 1ère feuille => Visualiser le code et y coller cette macro :
VB:
Private Sub CommandButton1_Click()
Dim ncol%, x$, c As Range
ncol = 4 'nombre de colonnes, à adapter
Do
    x = InputBox("Texte recherché :", "Rechercher", x)
    If x = "" Then Exit Sub
    Set c = UsedRange.Offset(1).Find(x, , xlValues, xlPart)
Loop While c Is Nothing
With Sheets("lignes copiées")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    c.EntireRow.Resize(, ncol).Copy .Range("A" & .Rows.Count).End(xlUp)(2)
    .Activate 'facultatif
End With
End Sub
Cliquer sur le bouton.

Bien entendu le texte recherché peut se trouver sur plusieurs lignes mais là c'est une autre histoire...

A+
 

Fichiers joints

waskar

XLDnaute Nouveau
Merci.

Vous me demandez de copier-coller le code. Mais il y est déjà, quand je fais la procédure que vous mentionnez.

Par ailleurs, dans le code, où dois-je mettre le paramètre "N" qui indique quelle ligne doit être copiée/collée ? (toutes les lignes contenant "N" dans la colonne B seront copiées et collées dans l'autre onglet).

Désolé par avance si les questions sont "noobesques". ^^
 
Dernière édition:

job75

XLDnaute Barbatruc
(toutes les lignes contenant "N" dans la colonne B seront copiées et collées dans l'autre onglet).
C'est un simple filtrage, voyez ce fichier (2) et cette macro dans le code de la feuille "Filtre" :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
UsedRange.EntireRow.Delete 'RAZ
With Sheets("base donnée initiale").UsedRange.Resize(, 4) '4 colonnes
    .AutoFilter 2, "N" 'filtre automatique
    .Copy [A1]
    .AutoFilter
End With
End Sub
Elle se déclenche quand on active la feuille.
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas