Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

herpou

XLDnaute Nouveau
Bonjour à tous,


L'explication est assez simple mais la macro, je pense moins (je suis un novice dans ce domaine).
Je ne peux pas fournir mon fichier (confidentiel)

J'ai une colonne (F8:F4001) qui est vide. J'ai des colonnes de (AA8:AA4001)...(AB8:AB4001) à (DM8: DM4001) qui contiennent des informations venant de formules tels que recherchev...

Je voudrais que dès lors que l'on rentre une information dans la cellule par exemple F8.
Un copier-collage spécial (par valeur) s'opère des cellules AA8 à DM8 (pour garder les informations mais supprimer les formules)
Dès lors que l'on rentre une information dans la cellule par exemple F9
Un copier-collage spécial (par valeur) s'opère des cellules AA9 à la cellule DM9

etc.....


Merci d'avance
 

tototiti2008

XLDnaute Barbatruc
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Bonjour herpou,

à tester dans le code de la feuille

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 6 Then
            Range("AA" & Target.Row & ":DM" & Target.Row).Value = Range("AA" & Target.Row & ":DM" & Target.Row).Value
        End If
    End If
End Sub
 

herpou

XLDnaute Nouveau
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

La macro marche super bien mais je voudrais aller encore plus loin si possible.


Car imaginons que la personne fait un double clic par inadvertance dans une des cellules de la colonne (F8:F4001), cela fait un copier collage spécial par valeur

Je voudrais si possible que dès lors une personne rentre une date ou du caractère du type **/**/**, cela fasse un copier collage spécial par valeur

Si ce n'est pas possible, un copier-collage spécial par valeur dès lors qu'un caractère est rentré dans une des cellules de la colonne (F8:F4001)

Mais pas une autre action comme un double clic


Et aussi, spécifier copier-collage spécial par valeur pour les cellules comprises entre les lignes 8 et 1500 ?


Merci d'avance
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Bonjour herpou,

à tester

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Target.Column = 6 And Target.Row > 7 And Target.Row < 1501 And Target <> "" Then
            If IsDate(Target.Value) Or InStr(Target.Value, "/") > 0 Then
                Range("AA" & Target.Row & ":DM" & Target.Row).Value = Range("AA" & Target.Row & ":DM" & Target.Row).Value
            End If
        End If
    End If
End Sub
 

herpou

XLDnaute Nouveau
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Merci pour tout ! Elle est parfaite, j'ai juste changer un petit détail. Mais c'est super !!!!


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 6 And Target.Row > 7 And Target.Row < 1501 And Target <> "" Then
If IsDate(Target.Value) Or InStr(Target.Value, "**/**/****") > 0 Then
Range("AA" & Target.Row & ":DM" & Target.Row).Value = Range("AA" & Target.Row & ":DM" & Target.Row).Value
End If
End If
End If
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Re,

A priori, les deux moyens marchent. Encore merci

Voilà qui m'étonnerais

Code:
InStr(Target.Value, "**/**/****")

renvoie systématiquement 0
les "*" ne sont pas admises dans INSTR
il recherche la chaine exacte "**/**/****", peu de chances qu'il la trouve, à moins que ce soit ça qui est saisi dans tes cellules
 

herpou

XLDnaute Nouveau
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Il faut renseigner une date à chaque fois du type (jj/mm/aaaa). Exemple : 12/10/2012. J'ai fais plusieurs essais et ca marche à chaque fois. Vous pensez que parfois cela ne marche pas ?
 

herpou

XLDnaute Nouveau
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Effectivement, ca marche... Mais ce défaut est au contraire une qualité pour ma base de données.
Car si la personne tape 03/31/2010, c'est qu'elle avait l'intention de faire un "copier-collage" de la ligne par valeur. Donc les données n'évolueront plus et rien ne l'empêche (si elle s'en apercoit) de remodifier son erreur de date par la suite.
 

tototiti2008

XLDnaute Barbatruc
Re : Macro VBA pour copier-collage spécial (valeur) sous conditions (help please !)

Bonjour herpou,

tout ça juste pour dire que "Instr(Target.value, "**/**/****")>0" n'est pas équivalent à "target.value like "##/##/####""
et que les "*" du Instr ne sont pas compris comme n'importe quel caractère
après, à toi de choisir le comportement le plus adapté à ton problème
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 009
Membres
101 865
dernier inscrit
MLL