Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA-Recherche V+copier+insérer lignes

7 réponses
Avatar
Sunburn
Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.

7 réponses

Avatar
FFO
Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.


Avatar
Ulysse
Salut sunburn
voici ce que j'ai pu faire
Sub ulysse()
k = 215
For i = 1 To 500
If Cells(i, 1) >= 10 And Cells(i, 1) <= 149 Then
champ = "A" & i & ":D" & i
champ1 = "A" & i + k & ":D" & i + k
Range(champ).Copy sheets("C").Range(champ1)
End If
k = 1 + k - 1
Next
End Sub

cependant, il te reste à supprimer les lignes vides dans la feuille C



Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.


Avatar
Sunburn
salut,
ça me copie bien les données.
par contre, je voudrais que le test des chiffre 10 à 149 ne se fasse que sur
la colonne A.
De plus, je voudrais insérer le nombre de ligne qu'il faut copier, et non
pas juste les coller.
Merci.
yann


Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.




Avatar
FFO
Avec donc le test uniquement sur la colonne A et en insérant le résultat à
partir de la ligne 215 celà donne le code suivant :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Celà te convient-il ???

salut,
ça me copie bien les données.
par contre, je voudrais que le test des chiffre 10 à 149 ne se fasse que sur
la colonne A.
De plus, je voudrais insérer le nombre de ligne qu'il faut copier, et non
pas juste les coller.
Merci.
yann


Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.






Avatar
Sunburn
Re,
oui, celà marche presque comme je veux.
en faisant le test sur une table plus complexe, j'ai deux soucis :

-le chiffre que je cherche peut avoir un nombre de caratère différent (j'ai
entre 6 et 8 chiffres). donc, j'ai résolu en mettant 10000000 à 14900000.
mais peut-on lui dire "les chiffre commençant par 10 jusqu'à ceux commençant
par 149 ?

-de plus, je veux faire cette opération plusieurs fois sur la même feuille.
mais comme celà décale mes lignes (d'un nombre inconnu à chaque fois), est-il
possible de lui dire de le coller après la celule nommée "10a" par exemple?

Merci de ton aide.
Yann


Avec donc le test uniquement sur la colonne A et en insérant le résultat à
partir de la ligne 215 celà donne le code suivant :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Celà te convient-il ???

salut,
ça me copie bien les données.
par contre, je voudrais que le test des chiffre 10 à 149 ne se fasse que sur
la colonne A.
De plus, je voudrais insérer le nombre de ligne qu'il faut copier, et non
pas juste les coller.
Merci.
yann


Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.








Avatar
FFO
Concernant la condition commençant par 10 ou par 149
je te propose :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
n1 = Mid(c, 1, 2)
n2 = Mid(c, 1, 3)
If n1 = 10 Or n2 = 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Concernant la 2° condition je ne comprends pas trés bien ce que tu souhaites
Qu'entends tu par cellule nommé 10a ??? la cellule A10 ???
Merci de préciser

Re,
oui, celà marche presque comme je veux.
en faisant le test sur une table plus complexe, j'ai deux soucis :

-le chiffre que je cherche peut avoir un nombre de caratère différent (j'ai
entre 6 et 8 chiffres). donc, j'ai résolu en mettant 10000000 à 14900000.
mais peut-on lui dire "les chiffre commençant par 10 jusqu'à ceux commençant
par 149 ?

-de plus, je veux faire cette opération plusieurs fois sur la même feuille.
mais comme celà décale mes lignes (d'un nombre inconnu à chaque fois), est-il
possible de lui dire de le coller après la celule nommée "10a" par exemple?

Merci de ton aide.
Yann


Avec donc le test uniquement sur la colonne A et en insérant le résultat à
partir de la ligne 215 celà donne le code suivant :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Celà te convient-il ???

salut,
ça me copie bien les données.
par contre, je voudrais que le test des chiffre 10 à 149 ne se fasse que sur
la colonne A.
De plus, je voudrais insérer le nombre de ligne qu'il faut copier, et non
pas juste les coller.
Merci.
yann


Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.










Avatar
Sunburn
Re,
Ok, ça marche bien comme celà.
pour la cellule, j'ai trouvé.

Par contre j'ai un souci. je voudrais coller à partir de la colonne B. mais
il ne veut pas, il me dis que "les zones de coie et de collage sont de formes
différentes.
Et pourtant, oui les largeurs sont différentes, mais la forme est la même
(pas de celulles fusionnées).
Peux-tu m'éclairer?
merci.
Yann


Concernant la condition commençant par 10 ou par 149
je te propose :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
n1 = Mid(c, 1, 2)
n2 = Mid(c, 1, 3)
If n1 = 10 Or n2 = 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Concernant la 2° condition je ne comprends pas trés bien ce que tu souhaites
Qu'entends tu par cellule nommé 10a ??? la cellule A10 ???
Merci de préciser

Re,
oui, celà marche presque comme je veux.
en faisant le test sur une table plus complexe, j'ai deux soucis :

-le chiffre que je cherche peut avoir un nombre de caratère différent (j'ai
entre 6 et 8 chiffres). donc, j'ai résolu en mettant 10000000 à 14900000.
mais peut-on lui dire "les chiffre commençant par 10 jusqu'à ceux commençant
par 149 ?

-de plus, je veux faire cette opération plusieurs fois sur la même feuille.
mais comme celà décale mes lignes (d'un nombre inconnu à chaque fois), est-il
possible de lui dire de le coller après la celule nommée "10a" par exemple?

Merci de ton aide.
Yann


Avec donc le test uniquement sur la colonne A et en insérant le résultat à
partir de la ligne 215 celà donne le code suivant :

Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:A500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
Selection.Insert Shift:=xlDown
ActiveCell.Offset(1, 0).Select
End If
Next

Celà te convient-il ???

salut,
ça me copie bien les données.
par contre, je voudrais que le test des chiffre 10 à 149 ne se fasse que sur
la colonne A.
De plus, je voudrais insérer le nombre de ligne qu'il faut copier, et non
pas juste les coller.
Merci.
yann


Salut
Je te propose :
Sheets("C").Select
Range("A215").Select
For Each c In Worksheets("Balance").Range("A1:D500")
If c >= 10 And c <= 149 Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next

Sachant que j'inclu dans le choix les valeurs 10 et 149

Espérant avoir répondu à ton attente

Bonjour,
j'ai un tableau de A1 à D500. colone 1 = chiffres (de 6 à 10 caractères),
colone 2 = libellés (lettres), colones 3 et 4, chiffres à virgulles.

je cherche à effectuer en VBA, une recherche V sur ma feuille "balance", sur
mon tableau de A1 à D500, avec comme critère que le chiffre de la première
colonne soit compris entre le chifre 10 et le chiffre 149 .
Une fois cette recherche faite, je voudrais copier ces lignes (en les
insérant), sur ma feuille "C", ligne 215

Je vous remercie si vous pouvez m'apporter votre aide.

"L'apprentissage est long et dur, comme certaines choses de la vie"... P.O.