EXCEL VBA - Insertion de ligne a ref. variabl [Résolu/Fermé]

Signaler
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
-
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
-
Bonjour,


JE voudrais savoir comment avec du code, on peut retrouver une valeur précise dans une colonne....

A partir du choix d une valeur dans une cellule, il faudrait pouvoir retrouver le tableau correspondant dans une autre feuille de calcul, et y inserer des infos. LE probleme c Est qu a chaque ajout, la valeur des lignes vont changer a chaque fois. Au début j'avais écrit pour la macro du bouton "save":

If Sheets("Feuil2").Range("A6").Value = "Argentina" Then
Sheets("Feuil1").Rows(11).EntireRow.Insert
Sheets("Feuil2").Range("A6:F6").Copy
Sheets("Feuil1").Range("A11").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Else
Sheets("Feuil1").Rows(16).EntireRow.Insert
Sheets("Feuil2").Range("A6:F6").Copy
Sheets("Feuil1").Range("A16").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

End if



Mais le probleme c est que toutes ces reference de lignes change a chaque fois ....... comment faire...??


3 réponses

Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
Bonjour

Option Explicit 
Sub inserer_svt_plant() 
Dim plant As String 

plant = Sheets(2).Range("A6") 

With Sheets(1) 
    lig = .Columns("A").Find(plant, .Range("A1"), xlValues).Row + 3 
    Rows(lig).Insert Shift:=xlDown 
    .Range(.Cells(lig, "A"), .Cells(lig, "F")) = Sheets(2).Range("A6:F6").Value 
End With 
End Sub 


demo
http://www.cijoint.fr/cjlink.php?file=cj201102/cijYvVqExA.xlsm
Michel
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
MErci bien michel!! je pensais pas que la commande .Find fonctionnait avec l objet Columns(). JE vais mettre les noms des pays en colonnes B !
Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
Content pour toi.
nota:"Columns" est en fait une propriété de l'objet "range" ou "worksheets"
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
excusez moi j ai oublier de vous mettre le fichier joint!! le voici!

http://www.cijoint.fr/cjlink.php?file=cj201102/cijai5GYI8.xlsx

merci encore
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
J ai essayer de simplifier la boucle with, et ça marche bien aussi sans :

Plant_Name = Sheets(2).Range("D12").Value
d = Sheets(1).Columns("A").Find(Plant_Name).Row + 3
Sheets(1).Rows(d).EntireRow.Insert
Sheets(2).Range("D12").Copy
Sheets(1).Range("A" & d).PasteSpecial Paste:=xlPasteValues

MErci pour votre aide!

NB: les ref ci dessus n'ont plus rien a voir avec le fichier partagé!..)
Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
Bonjour,

"With- End with" n'est pas une boucle mais un bloc
et il faut autant que possible éviter les copy-paste
la dessus démo
https://www.cjoint.com/?3cuiVbgwcXX

je pars en rando : je te donnerai des adresses de tutos ce soir ou demain matin
Messages postés
16214
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 septembre 2020
3 036
concernant "WIth -end with" page 39
du Cours excel

https://bidou.developpez.com/article/VBA/
Messages postés
166
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
18 mai 2020
10
Merci MIchel!