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

un petit coup de main ....

11 réponses
Avatar
eneric
Bonjour,
j'ai un leger trou de memoire et je coince
dans un plage de cellule (ex: D4:E1000)il faut que je repere les
cellules qui contiennent "P" ou que l'on va saisir dans le futur donc
:
'For Each x In Range("D4:E1000")
'If x.Value Like "P" then ....
et la je bute soit sur la syntaxe soit sur la methode
il faut que la selection de la ligne en question se fasse
de A_ à E_ et de la ranger dans la feuille correspondante
Sheets("toto").select
[A65...].End(xlup).Offset(1, 1).Select

' Next
merci de bien vouloir me donner le petit coup de main
bonne journee

--
eneric

10 réponses

1 2
Avatar
Elliac
Bonjour,

Sub p()
For Each c In Selection
If c = "p" Then
If t = "" Then
t = c.Address
Else
r1 = Range(t).Address
r2 = c.Address
t = Union(Range(r1), Range(r2)).Address
End If
End If
Next
Range(t).Select
End Sub

Camille

"eneric" wrote:

Bonjour,
j'ai un leger trou de memoire et je coince
dans un plage de cellule (ex: D4:E1000)il faut que je repere les
cellules qui contiennent "P" ou que l'on va saisir dans le futur donc
:
'For Each x In Range("D4:E1000")
'If x.Value Like "P" then ....
et la je bute soit sur la syntaxe soit sur la methode
il faut que la selection de la ligne en question se fasse
de A_ à E_ et de la ranger dans la feuille correspondante
Sheets("toto").select
[A65...].End(xlup).Offset(1, 1).Select

' Next
merci de bien vouloir me donner le petit coup de main
bonne journee

--
eneric





Avatar
Youky
Salut,
remets le bon nom des onglets ou mieux mets le CodeName
exemple Feuil1.Range(......si l'utilisateur renomme l'onglet cela ne plante
pas
tu trouves le nom dans la fenetre projet
Youky

For Each x In Range("D4:E1000")
If x.Value Like "P" Then
lig = Sheets("Feuil2").[A65536].End(3).Row + 1
Sheets("Feuil2").Range("A" & lig & ":E" & lig).Value = _
Sheets("Feuil1").Range("A" & x.Row & ":E" & x.Row).Value
End If
Next

"eneric" a écrit dans le message de news:

Bonjour,
j'ai un leger trou de memoire et je coince
dans un plage de cellule (ex: D4:E1000)il faut que je repere les cellules
qui contiennent "P" ou que l'on va saisir dans le futur donc :
'For Each x In Range("D4:E1000")
'If x.Value Like "P" then ....
et la je bute soit sur la syntaxe soit sur la methode
il faut que la selection de la ligne en question se fasse
de A_ à E_ et de la ranger dans la feuille correspondante
Sheets("toto").select
[A65...].End(xlup).Offset(1, 1).Select

' Next
merci de bien vouloir me donner le petit coup de main
bonne journee

--
eneric




Avatar
Garette
Bonjour,

Sub test()
For Each X In Sheets("Feuil1").Range("D4:E1000")
If InStr(1, X.Value, "P") <> 0 Then
Range(Cells(X.Row, 1), Cells(X.Row, 5)).Copy _
(Sheets("toto").Range("A65000").End(xlUp).Offset(1, 0))
End If
Next
End Sub

Il faut éventuellement gérer le P majuscule et le p minuscule
Dans mon cas je cherche P dans la chaine de caratere de la cellule.
Si on est sur qu'il n'y a que P alors remplacer :
If InStr(1, X.Value, "P") <> 0 Then
par
If X.Value = "P" <> 0 Then
Avatar
eneric
eneric à dit
je travaille sur vos propositions
a+
Bonjour,

Sub test()
For Each X In Sheets("Feuil1").Range("D4:E1000")
If InStr(1, X.Value, "P") <> 0 Then
Range(Cells(X.Row, 1), Cells(X.Row, 5)).Copy _
(Sheets("toto").Range("A65000").End(xlUp).Offset(1, 0))
End If
Next
End Sub

Il faut éventuellement gérer le P majuscule et le p minuscule
Dans mon cas je cherche P dans la chaine de caratere de la cellule.
Si on est sur qu'il n'y a que P alors remplacer :
If InStr(1, X.Value, "P") <> 0 Then
par
If X.Value = "P" <> 0 Then


--
eneric

Avatar
eneric
eneric à dit
Si j'ecris se code
For Each x In Range("D4:E1000")
If x.Value Like "p" Then
lig = Sheets("Ins").[A65536].End(3).Row + 1
Sheets("Ins").Range("A" & lig & ":E" & lig).Value = _
Sheets("BD").Range("A" & x.Row & ":E" & x.Row).Value
End If
Next
pour 4 lignes ou ils trouvent "p" il m'en recopie 10 avec
la premiere ligne 4 fois
la 2eme 3 fois etc...
si je mets se code :
For Each X In Sheets("BD").Range("D4:E1000")
If InStr(1, X.Value, "p") <> 0 Then
Range(Cells(X.Row, 1), Cells(X.Row, 5)).Copy _
(Sheets("Ins").Range("A65000").End(xlUp).Offset(1, 0))
End If
Next
End Sub
ilm'en recopie 15 avec des incoherences "ref"ou "nom prenon adresse"
car j'ai des formules dans A4 et C4 (concatener) et si
merci

--
eneric
Avatar
eneric
ouais j'ai compris
en fait chaque fois qu'il y a une saisie de "p"
il relit la plage definie et recopie de nouveau
donc il faut changer tout cela

--
eneric
Avatar
Garette
Re,

Effectivement, s'il y a un P dans la cellule D4 et un autre dans la cellule
E4, la ligne sera copier 2 fois.
Il faut gérer ceci.

Par exemple :

Sub test()
For Each X In Sheets("Feuil1").Range("D4:D1000")
If InStr(1, X.Value, "P") <> 0 Then
Range(Cells(X.Row, 1), Cells(X.Row, 5)).Copy _
(Sheets("toto").Range("A65000").End(xlUp).Offset(1, 0))
Else
If InStr(1, X.Offset(0, 1).Value, "P") <> 0 Then
Range(Cells(X.Row, 1), Cells(X.Row, 5)).Copy _
(Sheets("toto").Range("A65000").End(xlUp).Offset(1, 0))
End If
End If
Next
End Sub

On teste la colonne D, si on ne trouve pas de de "P", on teste la colonne E.
Avatar
eneric
oui
au depart supposons il y a 50 "p"
l'operateur en resaisit 20
tout se reinscrit
le lendemain on recommence 302 "p"
rebelotte
donc on se retrouve avec une floppee de nom chte dis pas

--
eneric
Avatar
eneric
en theorie il ne doit pas avoir de "p" dans les 2 comonnes car il y a
un paiement par cheque ou espece
parla suite je retournerai un msgbox si c'est le cas
sinon je cree un bouton macro je mets la procedure dedans
car le code est dans la feuille en ce moment
je ne reviens que ce soir pour tester
donc a +
merci

--
eneric
Avatar
Garette
Ahh..
Je n'avais pas compris comme ça.
Il faut donc vérifier si la ligne existe déjà dans le fichier d'arrivée.
Dans Toto tu veux remplacer une fiche déjà existante ?
Une solution serait de dé-doublonner les fiches dans l'onglet Toto à la fin
de la macro de copie...

"eneric" a écrit dans le message de news:

oui
au depart supposons il y a 50 "p"
l'operateur en resaisit 20
tout se reinscrit
le lendemain on recommence 302 "p"
rebelotte
donc on se retrouve avec une floppee de nom chte dis pas

--
eneric




1 2