Récupérer ligne d'une fonction Range.find

Résolu/Fermé
Sarkatore - 15 mars 2022 à 15:44
yg_be Messages postés 22736 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 avril 2024 - 15 mars 2022 à 16:38
Bonjour,

J'essaye actuellement de créer un bouton permettant d'ajouter une colonne lorsque l'on veut ajouter "une génération". J'aimerai par la même occasion que lorsqu'on ajoute une génération, l'intituler des la colonne soit "Génération ..." pour les 4 tableaux

Pour cela j'essaye de récupérer le numéro de ligne d'une fonction range.find mais je n'y arrive pas

Pouvez vous m'aider ?

Private Sub CommandButton1_Click()

Dim generation As Integer
Dim primemoy, Agemoy, Sanseff, contrat As Range
Dim ligneprime, ligneAge, ligneeffet, lignecontrat As Integer

If MsgBox("Voulez vous ajouter une génération ?", vbYesNo, "Nouvelle génération") = vbYes Then

generation = InputBox("Année de la nouvelle génération", "Nouvelle génération")

dercol = Cells(3, 16384).End(xlToLeft).Column

Columns(dercol).Copy

Columns(dercol + 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False



Set primemoy = Sheets("Feuil4").Columns(1).Find("prime moyenne")
Set Agemoy = Range("A:A").Find("Age moyen", lookat:=xlWhole)
Set Sanseff = Range("A:A").Find("Sans effet", lookat:=xlWhole)
Set contrat = Range("A:A").Find("Nombre de contrat", lookat:=xlWhole)

Set ligneprime = Range("primemoy").Row
Set ligneAge = Range(Agemoyen).Row
Set ligneeffet = Range(Sanseff).Row
Set lignecontrat = Range(contrat).Row



Cells(ligneprime, dercol + 1).Value = "Génération " & generation

Cells(ligneAge, dercol + 1).Value = "Génération " & generation

Cells(ligneeffet, dercol + 1).Value = "Génération " & generation

Cells(lignecontrat, dercol + 1).Value = "Génération " & generation
End If

End Sub


Configuration: Windows / Chrome 88.0.4324.190

1 réponse

yg_be Messages postés 22736 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 avril 2024 1 477
15 mars 2022 à 16:27
bonjour,
un exemple:
Dim primemoy As Range
Dim ligneprime As long
Set primemoy = Sheets("Feuil4").Columns(1).Find("prime moyenne")
ligneprime = primemoy.Row

Attention, pour déclarer correctement chaque variable, il faut specifier le type de chacune:
Dim primemoy As Range, Agemoy As Range, Sanseff As Range, contrat As Range
0
yg_be Messages postés 22736 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 avril 2024 1 477
15 mars 2022 à 16:38
ou bien
Dim ligneprime As long
ligneprime = Sheets("Feuil4").Columns(1).Find("prime moyenne").Row
C'est plus court, mais plus compliqué quand cela ne marche pas bien.
0