Copie sous condition

Résolu
dhaze Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   4 724
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 724
 
Bonsoir,

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