Copier coller valeurs au même endroit sur certaines colonne

st007

XLDnaute Barbatruc
Bonjour,

Avec ce code, je copie toute la feuille "résultats" que je recolle au même endroit en ne gardant que les valeurs et supprime tous les onglets sauf "resultats" et incidence"
Code:
Public Sub nettoyage()


Cells.Select
    Selection.Copy
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A1").Select
        Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If ws.Name <> "Résultats" And ws.Name <> "Incidences" Then ws.Delete
    Next
    Application.DisplayAlerts = True

End Sub
Je souhaiterais plus précisément
copier coller valeurs des colonnes B:G,J:N,T:AN
garder intacte les colonnes A,G:J,N:T...

Une idée toute faite ou une piste
J'en suis là avec l'enregistreur de macro, des remarques ?
Code:
Public Sub nettoyage()

    Application.ScreenUpdating = False
    Columns("B:G").Select
    Selection.Copy
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("J:N").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("J1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    Columns("T:AN").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("T1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    Range("A1").Select
        Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If ws.Name <> "Résultats" And ws.Name <> "Incidences" Then ws.Delete
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour à tous_____________EDITION: Salut mapomme ;)
_________________________(Quid de ma remarque, lettre en rouge ? tu es d'accord avec cela ?)

st007
copier coller valeurs des colonnes B:G,J:N,T:AN
garder intacte les colonnes A,G:J,N:T...
Y a comme un problème non ?

Pour ce qui est des valeurs seules, voici un moyen de faire pour B:G
(il te faudra identifier chaque dernière ligne pour les autres colonnes)
Code:
Sub ExempleVALSEUL()
Dim DL&
DL = Cells(Rows.Count, "G").End(xlUp).Row
With Range("B1:G" & DL)
    .Value = .Value
End With
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour st007, Staple1600 :),

Un autre essai. Les colonnes à copier/coller en valeur sont désignées via la constante cols.

Le code dans le module de code de la feuille "Feuil1":
VB:
Sub copie_valeurs()
Const Cols = "a:b,e,g:i,l,n"
Dim xrg As Range, maxlig&, Col, i&

Col = Split(Cols, ",")
For i = 0 To UBound(Col)
  If InStr(Col(i), ":") = 0 Then Col(i) = Trim(Col(i)) & ":" & Trim(Col(i))
Next i
Col = Join(Col, ",")

For Each xrg In Range(Col).EntireColumn
  maxlig = Cells(Rows.Count, xrg.Column).End(xlUp).Row
  Range(Cells(1, xrg.Column), Cells(maxlig, xrg.Column)) = Range(Cells(1, xrg.Column), Cells(maxlig, xrg.Column)).Value
Next xrg
End Sub

NB: préférez la version v2 du message suivant

Edit: Stapple :), OK pour ta remarque - d'ailleurs mon fichier ne reprend pas l'exemple tel quel. L'utilisateur l'adaptera à son cas.
 

Pièces jointes

  • Copier coller valeurs v1.xlsm
    22.9 KB · Affichages: 47
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour à tous,

Utiliser la version v2 qui fige les calculs avant copie. Sur la version v1, on pouvait avoir des valeurs différentes sur certaines colonnes des colonnes recopiées en valeur (sans doute à cause de maintenant() qui est une fonction volatile).
VB:
Sub copie_valeurs()
Const Cols = "a:b,e,g:i,l,n"
Dim xrg As Range, maxlig&, Col, i&, calcul

calcul = Application.Calculation: Application.Calculation = xlCalculationManual
Col = Split(Cols, ",")
For i = 0 To UBound(Col)
  If InStr(Col(i), ":") = 0 Then Col(i) = Trim(Col(i)) & ":" & Trim(Col(i))
Next i
Col = Join(Col, ",")

For Each xrg In Range(Col).EntireColumn
  maxlig = Cells(Rows.Count, xrg.Column).End(xlUp).Row
  Range(Cells(1, xrg.Column), Cells(maxlig, xrg.Column)) = Range(Cells(1, xrg.Column), Cells(maxlig, xrg.Column)).Value
Next xrg
calcul = Application.Calculation = calcul
End Sub
 

Pièces jointes

  • Copier coller valeurs v2.xlsm
    18.4 KB · Affichages: 59
Dernière édition:

st007

XLDnaute Barbatruc
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour à tous_____________EDITION: Salut mapomme ;)
_________________________(Quid de ma remarque, lettre en rouge ? tu es d'accord avec cela ?)

st007

Y a comme un problème non ?

Bonjour, effectivement, ce n'est pas clair, a la lecture il vous est difficile de bien identifier les colonnes
Je souhaite garder les formules des colonnes :
A,H,I,O,P,Q,R,S,AO,AP,AQ
et ne garder en valeurs les autres :
B:G, J:N, T:AN

le code obtenu avec l'enregistreur de macro fait ce que je veux, et comme je ne suis toujours pas capable de créer un code mais parfois de le comprendre , j'avais créé ce fil.

- Staple1600
vous faites bien plus court et je crois tout comprendre, me reste à recopier
Code:
With Range("B1:G" & DL)
    .Value = .Value
End With
pour les deux autres plages et continuer avec la gestion de mes onglets ...

- Mapomme
je rame un peu pour comprendre le raisonnement du "split" et "join"
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour st007,

(...) Je souhaite garder les formules des colonnes : A,H,I,O,P,Q,R,S,AO,AP,AQ
et ne garder en valeurs les autres : B:G, J:N, T:AN

Avez-vous testé le le fichier Copier coller valeurs v2.xlsm‎ ?

Edit: Stapple :), OK pour ta remarque - d'ailleurs mon fichier ne reprend pas l'exemple tel quel. L'utilisateur l'adaptera à son cas.
 

st007

XLDnaute Barbatruc
Re : Copier coller valeurs au même endroit sur certaines colonne

Bonjour mapomme,
votre code "fait le boulot" comme je m'y attendais, c'est ce qui fait la qualité de ce forum
j'essaye d'apprendre le vba en décortiquant votre code et d'autres que je trouves ici.
J'ai souvent lu la hantise des .select mais surtout la longueur des codes obtenus par l'enregistreur et les lignes de code inutiles.
 

st007

XLDnaute Barbatruc
Re : Copier coller valeurs au même endroit sur certaines colonne

Sur base de Staple1600 mon code est devenu :
Code:
Public Sub nettoyage()

Application.ScreenUpdating = False
Dim DL&
DL = Cells(Rows.Count, "G").End(xlUp).Row
With Range("B3:G" & DL)
    .Value = .Value
End With
With Range("J3:N" & DL)
    .Value = .Value
End With
With Range("T3:AN" & DL)
    .Value = .Value
End With

        Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If ws.Name <> "Résultats" And ws.Name <> "Incidences" Then ws.Delete
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

sachant que toutes mes colonnes comportent le même nombre de ligne.
désolé Mapomme, je creuse ma compréhension de ton code
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Copier coller valeurs au même endroit sur certaines colonne

(re)Bonjour st007 :)

désolé Mapomme, je creuse ma compréhension de ton code
Il ne faut pas être désolé. Ce forum est fait pour rendre les gens heureux :D d'autant plus s'ils ont résolu leur problème.
Je m'interrogeais juste, suite à ton message #5, car tu ne nous disais pas si tu avais ou non une réponse satisfaisante à ta question.

st007 à dit:
j'essaye d'apprendre le vba en décortiquant votre code et d'autres que je trouves ici
C'est une assez bonne méthode :rolleyes: . Bon courage!

@+ pour de nouvelle aventures...
 

Discussions similaires

Réponses
2
Affichages
123

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote