Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

apres un find remplacer Cell.EntireRow.Value

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonsoir à tous,

Après une recherche du type :

Code:
Set Cell = Feuil1.Columns(2).Find(Nom, LookIn:=xlValues, lookat:=xlWhole)
     If Cell Is Nothing Then MsgBox (" Le nom " & " " & pass & " " & "n'a pas été trouvé"), vbExclamation: Exit Sub

Je copie la ligne entière comme ceci :

Code:
Sheets("Agent").Rows("200:200").Value = Cell.EntireRow.Value

Mais hélas par la suite ma table va s'agrandir, et j'ai donc besoin de m'organiser autrement.
A à E en feuille 1 ne bougera pas mais la fin de ma table oui, donc pour cela j'ai crée par contrôle+F3 une zone Verif ( qui es à la fin de ma table feuille1 ou j'ai des sommes que je récupère ), je dois récupérer de la ligne trouvée, copier A à E de feuille1 vers feuille "agent" en ligne 200 soit A200 à E200 et récupérer de ma plage verif de la même ligne trouvée par find en feuille "agent" ligne 200 de EA200 à EH200

J'avais écris :

Code:
 Sheets("Agent").Rows("200:200").Value = Cell.Range(("A:E") & Range("verif")).Value

Mais j'ai un soucis de syntaxe !

Merci par avance
 
Dernière édition:
Re : apres un find remplacer Cell.EntireRow.Value

Re


C'était pourtant simple, non ???
Remplace cette partie du code celui-ci ci dessous

Code:
With Sheets("feuil2")
    .Cells(200, "A").Resize(, 5).Value = _
    Cell.Offset(, -1).Resize(, 5).Value
    .Cells(200, "EA").Resize(, 8).Value = _
    Feuil1.Cells(Cell.Row, "EA").Resize(, 8).Value
End With

On copie en plus ce que tu demandes non ?
copier dans feuilles2 rows200 EA:EH
 
Re : apres un find remplacer Cell.EntireRow.Value

Merci j'ai plus l'habitude de travailler avec des ranges que des cells et très honnêtement, je ne vois toujours pas ou et comment je vais écrire mon Range("verif").range("a:f").value= feuille2.range("ea:ef")
Je suis même perdu
 
Re : apres un find remplacer Cell.EntireRow.Value

Re


Mon dernier code fait bien ce que tu souhaites non ???????
et de copier avec un copie destination vers ma feuille2 les morceaux Range ("Ai:Ei") et Range("verif").Range("Ai:Hi")
sauf qu'ici i=200

Donc il suffit d'adapter en changeant le nom de la feuille et utiliser i si tu le souhaites.
 
Re : apres un find remplacer Cell.EntireRow.Value

Re


Un dernière modif pour ne pas rester figé sur la ligne 200
Ajoutes en début de code
Dim i As Long
puis remplaces de nouveau au même endroit dans le code, cette partie par celle-ci
Code:
With Sheets("feuil2")
i = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    .Cells(i, "A").Resize(, 5).Value = _
    Cell.Offset(, -1).Resize(, 5).Value
    .Cells(i, "EA").Resize(, 8).Value = _
    Feuil1.Cells(Cell.Row, "EA").Resize(, 8).Value
End With

NB: j'ai testé sur ton fichier joint dans le fil et cela fonctionne, la recopie des plages demandées se fait non ?
ET cette recopie se fait la première ligne vide en colonne A de la feuille 2 à chaque exécution du code désormais.
 
Re : apres un find remplacer Cell.EntireRow.Value

Je te remercie,
Je dois très certainement mal m'exprimer ! car mon objectif est d'avoir quelques soit le nombre de colonnes ajoutées en feuille1 entre
F et EA une copie en feuille2 en ligne 200 ( et uniquement en ligne 200 ) ou je récupère "A:F" les lignes entre je ne les Récupères pas et les valeurs feuilles 1 "EA:EF"
j'ai essayé ton exemple et si j'ajoute 2 colonnes en feuille1 entre F et EA et bien j'ai le même scénario en feuille2 un décalage de deux colonnes et donc du fait je n'ai plus mes valeurs en feuille2 rows200 "EA:EF" mais en feuille2 rows200 "EC:EH" ! je récupères cette plage qui doit restée fixe pour alimenter des compteurs
J'espères avoir été plus claire ?
 
Dernière édition:
Re : apres un find remplacer Cell.EntireRow.Value

Si à condition que aucune colonne ne soient ajouté entre F en EA en feuille1, et mon problème est que justement des colonnes vont être par la suite ajoutées !
si non Cell.EntireRow.Value suffirait amplement !
Donc j'ai créée en feuille1 une zone nomé "verif "par CTRL+F3 en "EA:EF" pour que quelque soit le nombre de colonnes ajoutées entre F et EA feuille1 La première colonne EA s’appellera A et EB =B et EC =C dans cette zone.
Avec des ranges pour récupérer les valeurs de la zone j'écris :
Code:
Range("verif").Range("A:H")
'pour copier de feuille1 en feuille2 
feuil1.Range("verif").Range("A:H").Value= feuil2.Rows200.range("EA:EF")


Comme je te l'ai expliqué la feuille2 me permet d’alimenter des compteurs donc si EA:EF devient EC:EH car deux colonnes ont été ajouté en feuille1 et bien mon compteur ne s'incrémente plus car les données seront aussi décalées en EC:EH en feuille2
Donc je dois récupérer les valeurs entre A et F de la feuille1 de la ligne trouvée par la recherche du nom d'une personne.qui elles ne bougeront pas et les copiers en feuille2 ligne 200 "A:F" et récupérer les valeurs de ma zone "Verif" et copier "Verif "dans la feuille2 en ligne 200 et dans la plage EA:EF même si des colonnes ont été ajouté, quelques soit le décalage en feuille 1
 
Dernière édition:
Re : apres un find remplacer Cell.EntireRow.Value

J'ai trouvé et quelque soit le nombre de colonnes incérées entre F et EA je n'est plus de décalage dans ma feuille 2
les données reste en EA:EF yep !

Voici mon code pour ceux qui voudrons en profiter, je suis parti sur la piste de récupérer la valeur de la ligne trouvée et de rentrer cette variable dans mon Range pour déterminer la ligne qui doit être copiée

Code:
 Sub CommandButton2_Click()
Dim Nom As String, Cell As Range, DC&
Dim x As Range, a As String, i As Integer
'Dim i As Integer
'Dim j As Integer
Dim prenon As String
Application.ScreenUpdating = False

Nom = InputBox("Veuillez Saisir le Nom de l'agent")

If Nom = "" Then
    MsgBox "Vous n'avez pas saisi de Nom d'un agent !!!", _
    "test de copie", vbExclamation
    Exit Sub
End If



i = Columns("B").Find(Nom, lookat:=xlWhole).Row
If Not x Is Nothing Then MsgBox (" Le nom " & " " & pass & " " & "n'a pas été trouvé "), vbExclamation: Exit Sub
MsgBox i
Sheets("test1").Range("A" & i & ":H" & i).Copy Destination:=Sheets("test2").Range("A1")
 Sheets("test1").Range("verif").Range("A" & i & ":F" & i).Copy Destination:=Sheets("test2").Range("EA1")

End Sub

Par contre je m'aperçois que si il y a des récurrences dans les noms il s'arrêtes au premier nom ce qui pourrais être plutôt gênant si il y a deux frères !
comment peut on palier à ce problème ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
2
Affichages
1 K
jeremie42
J
B
Réponses
3
Affichages
2 K
betteggan
B
A
Réponses
8
Affichages
1 K
AntoineM
A
M
Réponses
3
Affichages
1 K
MarcTer
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…