Autres Macro trouve la dernière ligne et copier/coller valeurs en écrasant les formules...

Christian0258

XLDnaute Accro
Bonjour à tout le forum,
Pourriez-vous me dire, pourquoi cette macro ne fonctionne pas ?
Ce que je souhaite :
j'ai un tableau AB:AW qui contient données issues de formules.
Je voudrais que la macro trouve la dernière ligne renseignée, quelle la copie, quelle l'éfface et quelle colle les valeurs sur cette même ligne…
Merci pour votre aide.
Bien amicalement,
Christian
la macro:
Sub CopierDernièreLigne()
Copie la dernière ligne du tableau AB:AW
ActiveCell.Offset(1, 0).Rows("28:49").EntireRow.Copy
effacement des données de la ligne copiée
Selection.ClearContents
Collage des VALEURS de la ligne copiée
Range("AB65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End Sub
 

jmfmarques

XLDnaute Accro
Bonjour
J'ai en ce qui me concerne des difficultés à comprendre la corrélation entre les deux lignes de ce code
VB:
Copie la dernière ligne du tableau AB:AW
ActiveCell.Offset(1, 0).Rows("28:49").EntireRow.Copy
Quoi qu'il puisse en être, ni l'on veut transformer en constantes les résultats des formules d'une plage (ici Range("A1:C3") pour l'exemple) , on le fait directement, ainsi
VB:
range("A1:C3").value = range("A1:C3").value
 

Christian0258

XLDnaute Accro
Re, le forum, jmfmarques

Merci pour ton aide. Je ne suis pas doué en VBA, cette macro est une "bidouille" qui ne fonctionne pas, c'est pourquoi je fais appel à vous les spécialistes.
Je vais essayer d'expliquer la chronologie des actions;

1) j'ouvre un USF pour faire des saisies

2) lorsque je valide les saisies dans un tableau Col A:Z, la colonne A ainsi renseignée, place des formules col AB;AW qui affichent des résultats. (les formules sont donc mises au fil des saisies)

3) Je souhaite intégrer dans le code de l'USF , à la fin, Call CopierDernièreLigne , pour transformer cette dernière ligne ainsi valider par l'USF en ligne de valeurs, donc en effaçant les formules.

En espérant avoir été clair.
Bien à vous,

Christian
 
Dernière édition:

jmfmarques

XLDnaute Accro
ensuite pour alléger le fichier je souhaite ne garder que les résultats et ce à chaque saisie par USF.
J'ai répondu en ce qui concerne cet aspect-là.
Le reste est pour moi ni compréhensible ni "devinable" et est donc ta seule affaire
 

patricktoulon

XLDnaute Barbatruc
bonjour le fil
j'ajouterais que ceci:
ActiveCell.Offset(1, 0).Rows("28:49").EntireRow.Copy
serait jouer au pendu
non seulement activcell n'a qu'une seule ligne alors chopper la 28 à 49 fait de toi qu'elqu'un de magique
mais en plus qui dit que activecell démarre au moins a la ligne 28

bref cette ligne ne veux rien dire
 

Roblochon

XLDnaute Barbatruc
Bonjour,

Avec A1 comme cellule active ,

ActiveCell.Offset(1, 0).Rows("28:49") donnera les lignes 29 à 50

Ce qui est dans la logique excel.

cordialement
 

Christian0258

XLDnaute Accro
Re, le forum jmfmarques, patricktoulon,

Comme je vous l'ai déjà dit, je sui nul en vba, donc avant vous déranger, j'essaye de me débrouiller mais quand je n'y arrive pas...je vous appelle.

Je trouve que vos petites remarques ; "est donc ta seule affaire" ou "fait de toi qu'elqu'un de magique" ou "bref cette ligne ne veux rien dire" ne sont pas très gentilles et ne m'apporte rien...

Bien à vous,
Bonnes Pâques
Christian
 
Dernière édition:

jmfmarques

XLDnaute Accro
ne sont pas très gentils et ne m'apporte rien...
Il ne s'agit pas de "gentillesse" ou de son contraire ...
Le problème est que l'on n'est tout simplement pas en mesure de t'aider, sans autres explications très complètes, en ce qui concerne cet aspect-là.
Ton code se base de surcroît sur une "cellule active". Laquelle ?
en vue de déterminer (selon quelle règle ?) une plage à copier.
Et traite au passage une "sélection" dont on ignore ce qu'elle est.
A part tenter de réparer nos boules de cristal (et d'y parvenir), je vois très mal comment t'être d'un vrai secours dans de telles conditions.
Désolé, mais là ...
 

Christian0258

XLDnaute Accro
Re, le forum, jmfmarques

Je pensais avoir été plus clair avec les explications du post3, mais bon peut-être que non ?.
Merci quand même pour ton aide.

Bien à toi,
Christian
 

jmfmarques

XLDnaute Accro
mais bon peut-être que non ?
Je ne vois personnellement aucune corrélation technique exposée entre ce qui y est dit et :
- la "cellule active"
- l'objet "Selection" utilisé
Bonne continuation. Je ne peux continuer dans de telles conditions.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Christian0258, Roblochon, patricktoulon, jmfmarques

•>Christian0258,
Test OK sur mon fichier de test
VB:
Private Sub CommandButton1_Click()
With Cells(Rows.Count, 1).End(3)(2)
    .Value = TextBox1 'juste pour le test
    .Resize(, 26) = .Resize(, 26).Value
End With
End Sub
EDITION: Pour tester
(1 feuille vierge + 1 userform avec un TextBox et un CommandButton)
Et cette macro pour la mise en situation
VB:
Sub créerTest()' Macro qui ne sert juste qu'à créer des données fictives
'Ce n'est donc pas une solution à la question, mais une macro pour tester
'le code plus haut dédié au CommandButton
[A1] = 1: [A1:A27].DataSeries
[B1:Z50] = "=ROW()*COLUMN()&""-""&ADDRESS(ROW(),COLUMN(),4)"
End Sub
 
Dernière édition:

Christian0258

XLDnaute Accro
Re, le forum, JM

Merci, JM, pour ton aide.
Je n'arrive pas à mettre en situation, malgré tes explications très claires.
J'ai fait ça...voir fichier

Bien à toi,
Christian
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Re

Remplaces la macro du CommandButton par celle-ci
VB:
Private Sub CommandButton1_Click()
Dim Test As Boolean
With Cells(Rows.Count, 1).End(3)(2)
    .Value = TextBox1 'juste pour le test
    .Resize(, 26) = .Resize(, 26).Value
    Intersect(ActiveSheet.UsedRange, .Resize(, 26)).Interior.Color = 255
    Test = .Offset(, 1).HasFormula
    MsgBox .Offset(, 1).Address & Chr(13) & "contient une formule? " & Test & Chr(13) & .Offset(, 1)
    Test = .Offset(-1, 1).HasFormula
    MsgBox .Offset(-1, 1).Address & Chr(13) & "contient une formule? " & Test & Chr(13) & .Offset(-1, 1).FormulaLocal
    .EntireRow.Delete
End With
End Sub
Est-ce que cela éclaire plus ta lanterne? ;)

PS: Merci d'avoir pris le temps d'implémenter mon exemple et de l'avoir testé.
 

Christian0258

XLDnaute Accro
Re, le forum, JM

Merci pour ton aide et ta patience, j'avoue que je ne comprends pas trop, c'est sûr que je ne suis pas une lumière dans ce domaine...Lol

Bien à toi,
Christian
 

Staple1600

XLDnaute Barbatruc
Re

Si tu lances d'abord la macro créerTest()
Tu vois que la plage de cellule B1:Z50 contient des formules
test OK?
Maintenant tu affiches l'userform, tu saisis une valeur dans le TextBox et tu cliques sur le CommandButton
(puis tu cliques sur la croix pour fermer l'userform)
La valeur saisie dans le Textbox ira se mettre en A28 (soit dans l'exemple la première cellule vide en colonne A)
Et si tu regardes les autres cellules sur cette ligne 28
(donc en B28:Z28), tu verras qu'il n'y a plus les formules, mais les valeurs seules.
test OK ?
 

Christian0258

XLDnaute Accro
Re, le forum, JM

OK, OK, j'ai compris, mais si je tape expl 28 dans l'USF, je dis ok aux deux messages box, puis je ferme USF, en A28 rien ne s'inscrit et les formules sur la ligne 28 sont toujours présentes…?

A te lire,
Merci
Christian
 

Staple1600

XLDnaute Barbatruc
Re

Refais l'essai avec le premier code du CommandButton
(le second code était purement illustratif)

Sinon, pour faire simple, joins une copie de ton propre fichier Excel
(agencée comme ton fichier original mais expurgée de toute donnée confidentielle)

NB: Pour résumer, le code initial que je proposais fait seulement ceci:
1) insérer la valeur du textbox dans la première cellule non vide en colonne A
2) transformer en valeurs les formules présentes sur la ligne de cette 1ère cellule non vide (et ce des colonnes B à Z)
 

Christian0258

XLDnaute Accro
Re, le forum, JM

C'est OK, ça fonctionne parfaitement.
Merci beaucoup JM, pour le temps que tu as bien voulu me consacrer et pour ton aide si précieuse.

Bien à toi,
Christian
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas