Copie sous condition

Résolu/Fermé
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 8 févr. 2016 à 18:56
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 9 févr. 2016 à 18:53
Bonjour à tous,

Je souhaiterais faire une copie de la colonne F
Vers la colonne "Nom" comme suit:

    ActiveSheet.Range(ActiveSheet.Range("F65536").End(xlUp), "F2").Select
    Selection.Copy

    Rows(1).Find("Nom", LookAt:=xlWhole).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Mais pas à pas avec une condition et un ajout:

Si la valeur de la cellule à copier est différente de "#"
on la recopie en joutant "_A"

Si la valeur de la cellule à copier est égale à "#"
on recopie la valeur de la cellule juste au-dessus en joutant "_B"

Votre aide serait la bienvenue...
Lo.
A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
9 févr. 2016 à 10:05
Bonjour,

Il y a dans ton énoncé quelques bizarreries mais en le respectant, cela doit donner ceci :
Dim col As Integer, lig As Long
    With ActiveSheet
        col = .Rows(1).Find("Nom", LookAt:=xlWhole).Column
        For lig = 2 To .Cells(Rows.Count, "F").End(xlUp).Row
            If .Cells(lig, "F") <> "#" Then
                .Cells(lig, col) = .Cells(lig, "F") & "_A"
            Else
                .Cells(lig - 1, col) = .Cells(lig, "F") & "_B"
            End If
        Next lig
    End With

0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
Modifié par dhaze le 9/02/2016 à 15:59
Merci pour ton aide.
J'avoue que ce n'était pas très clair...

En adaptant ta proposition pour le résultat escompté, voilà ce que ça donne:

Sub Créer_les_noms()
    
    Dim col As Integer, lig As Long
    With ActiveSheet
        col = .Rows(1).Find("Nom", LookAt:=xlWhole).Column
        For lig = 2 To .Cells(Rows.Count, "F").End(xlUp).Row
            If .Cells(lig, "F") <> "#" Then
                .Cells(lig, col) = .Cells(lig, "F") & "_A"
            Else
                .Cells(lig, col) = .Cells(lig - 1, "F") & "_B"
            End If
            Next lig
        End With
        
End Sub


La boucle que j'avais entrepris, en plus de ne pas fonctionner,
était beaucoup plus alambiquée que ça...

Ta citation d’Antoine est fort à propos !

Merci encore.
Lo.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
9 févr. 2016 à 18:53
Bonsoir,

Merci du retour, il faut garder l'alambic pour l'extraction des alcools ou essences ! ;-)
0