Chercher deux colonnes pour modifier l'une en fct de l'autre

Bonjour tlmd,

Etant débutant en VBA je fais appel à votre expertise !

J'aimerai :

- Localiser les colonnes contenant dans la première ligne "etage" et "coef"

- Remplir toute la colonne coef en fonction des informations comprises dans la colonne "etage"

J'ai réussi à faire un code permettant de faire la deuxième partie mais l'insertion de nouvelle colonne va changer leur adresse.

C'est pourquoi je voudrais trouver un moyen (ultime) pour me localiser à chaque fois dans les bonnes colonnes.

Certainement avec une imbrication de boucles for qui vient chercher la première valeur puis la seconde et ensuite exécute le code suivants...

Sub coeff()
Dim i As Integer

With ThisWorkbook.Sheets("Feuil1")

        For i = .Range("D" & .Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("D" & i).Value = "RDC" Then
                Range("F" & i).Value = "0"
            End If
            If .Range("D" & i).Value = "R+1" Then
                Range("F" & i).Value = "1"
            End If
            If .Range("D" & i).Value = "R+2" Then
                Range("F" & i).Value = "1.17"
            End If
            If .Range("D" & i).Value = "R+3" Then
                Range("F" & i).Value = "1.34"
            End If
            If .Range("D" & i).Value = "R+4" Then
                Range("F" & i).Value = "1.51"
            End If
            If .Range("D" & i).Value = "R+5" Then
                Range("F" & i).Value = "1.68"
            End If
            If .Range("D" & i).Value = "Ssol" Then
                Range("F" & i).Value = "1."
            End If

    Next i
End With

End Sub

Merci d'avance

24test-macro.xlsm (50.07 Ko)

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

15test-macro-v1.xlsm (24.21 Ko)

Bonsoir,

On ne met pas des macros standard n'importe où, et il convient de réserver les modules d'objets au rôle qui leur est dévolu.

Donc effacer tout le contenu du module ThisWorkbook qui n'a rien à faire là.

De toute façon, il est à remplacer en totalité :

Sub Coeff()
    Dim E, cc, i%, ke%, kc%, n%, c%
    With Worksheets("Feuil1")
        Do While .Cells(1, i + 1) <> ""
            i = i + 1
            If .Cells(1, i) = "Et." Then
                ke = IIf(ke = 0, i, ke)
            ElseIf .Cells(1, i) = "Coef" Then
                kc = IIf(kc = 0, i, kc)
            End If
        Loop
        n = .Cells(.Rows.Count, ke).End(xlUp).Row
        E = Split("RDC R+1 R+2 R+3 R+4 R+5 Ssol")
        cc = Array(0, 1, 1.17, 1.34, 1.51, 1.68, 1)
        Application.ScreenUpdating = False
        For i = 2 To n
            For c = 0 To UBound(E)
                If .Cells(i, ke) = E(c) Then
                    .Cells(i, kc) = cc(c): Exit For
                End If
            Next c
        Next i
    End With
End Sub

A placer dans un module Standard.

A lancer directement ou affecter à un bouton...

Cordialement.

MERCI BEAUCOUP pour vos réponses/conseils (notamment MFerrand) !

Ca m'a été d'une très grande aide.

Avez-vous un livre à me conseiller sur la programmation vba sur excel ?

J'aimerais approfondir le sujet.

Encore merci,

Bonne soirée.

Rechercher des sujets similaires à "chercher deux colonnes modifier fct"