Ne récupérer que la valeur

Bonjour tout le monde.

Je débute encore et du coup je patauge un peu même si avant de demander j'ai fait plusieurs tentatives mais je ne suis vraiment pas très doué à priori.

Voilà, mon code concatène 16 onglets sur un 17e onglet récapitulatif. En sachant que ces 16 onglets récupèrent eux-mêmes des données ailleurs à partir d'un formulaire.

La difficulté c'est que le code copie la cellule...alors que je souhaiterais qu'il ne copie que la valeur (car le fait de copier la formule me génère d'autres anomalies) . J'ai bien essayé de mettre .value dans le code mais je ne dois pas bien l'utiliser alors ça plante.

Voilà mon code (j'ai indiqué en gras là où le pb se pose à mon sens) :

Public Sub recap()

Worksheets("recap global").Range("A2:BZ60000").ClearContents

Set wso = Sheets("recap global")

dlo = 2

wso.Rows("2:" & dlo).ClearContents

For Each ws In Worksheets

If ws.Name <> wso.Name Then

dli = ws.Cells(Rows.Count, 1).End(xlUp).Row

If dli > 1 Then

ws.Rows("2:" & dli).Copy wso.Cells(dlo, 1)

dlo = dlo + dli - 1

End If

End If

Next

dlo = dlo - 1

End Sub

Un grand merci à vous d'avance.

Bonjour

Remplaces la ligne en cause par celles-ci

ws.Rows("2:" & dli).Copy
wso.Cells(dlo, 1).PasteSpecial Paste:=xlPasteValues

Merci.

Déjà ça m'avance.

En voulant compléter, par contre, je n'ai pas le résultat obtenu. J'ai ajouté une partie de code pour supprimer les lignes lorsque dans ma colonne "f" j'ai un 0 et du coup la concaténation me sort quelque chose d'un peu aberrant..

Mon code est celui-ci :

Public Sub recap()

Application.ScreenUpdating = False

' je concatène tous mes ongletsen ne prenant que les valeurs, pas les formules.

Worksheets("recap global").Range("A2:BZ60000").ClearContents

Set wso = Sheets("recap global")

dlo = 2

wso.Rows("2:" & dlo).ClearContents

For Each ws In Worksheets

If ws.Name <> wso.Name Then

dli = ws.Cells(Rows.Count, 1).End(xlUp).Row

If dli > 1 Then

ws.Rows("2:" & dli).Copy

wso.Cells(dlo, 1).PasteSpecial Paste:=xlPasteValues

dlo = dlo + dli - 1

End If

End If

Next

dlo = dlo - 1

'et maintenant je supprime les lignes si la colonne F contient un f

Dim rcel As Range

Range("f2:f60000").Select

Selection.CurrentRegion.Select

For Each rcel In Selection

If rcel.Value = 0 Then

rcel.EntireRow.Delete

End If

Next rcel

Application.ScreenUpdating = True

End Sub

Au cas où je joins mon fichier...

Dans tous les cas merci encore..c'est super sympa de prendre le temps de m'aider un peu. Je cherche de mon côté.

Merciiiiiiii

Bonjour

boxtom a écrit :

Au cas où je joins mon fichier...

Très très bonne idée

Cela va simplifier la recherche de la solution (enfin j'espère)

Notes y ce que tu as et ce que tu veux

Ok merci.

J'ai donc mis le fichier.

Le principe :

5 onglets et un onglet récap.

Chaque onglet est alimenté par un formulaire de saisie présent dans un autre classeur (un classeur par DR).

Jusque là tout va bien...

Mais comme déjà énoncé, lorsque je voulais concaténer, je récupérais les formules et ça générait des pb..résolus depuis avec ta proposition de code.

Mais maintenant, j'ai plein de lignes avec des valeurs à 0 que je souhaite supprimer (si la colonne F est à 0 donc). comme on peut le voir sur le fichier joint..

Et la partie de mon code supplémentaire ne fonctionne pas. C'est pour cela que je l'ai mis en commentaires vers la fin..(cela me récupère une quinzaine de lignes?? alors que 5 seulement sont remplies via les onglets et en plus les valeurs sont toutes à 0). Si besoin je peux aussi mettre l'exemple dans un fichier joint supplémentaire pour voir les lignes récupérées.

ublic Sub recap()

Application.ScreenUpdating = False

' je concatène tous mes ongletsen ne prenant que les valeurs, pas les formules.

Worksheets("recap global").Range("A2:BZ60000").ClearContents

Set wso = Sheets("recap global")

dlo = 2

wso.Rows("2:" & dlo).ClearContents

For Each ws In Worksheets

If ws.Name <> wso.Name Then

dli = ws.Cells(Rows.Count, 1).End(xlUp).Row

If dli > 1 Then

ws.Rows("2:" & dli).Copy

wso.Cells(dlo, 1).PasteSpecial Paste:=xlPasteValues

dlo = dlo + dli - 1

End If

End If

Next

dlo = dlo - 1

'et maintenant je supprime les lignes si la colonne F contient un 0

'Dim rcel As Range

'Range("f2:f60000").Select

'Selection.CurrentRegion.Select

'For Each rcel In Selection

'If rcel.Value = 0 Then

'rcel.EntireRow.Delete

'End If

'Next rcel

Application.ScreenUpdating = True

End Sub

Merci beaucoup.

8recap-globalv2.zip (55.74 Ko)

Bonjour

A vérifier si cela te convient

Bonsoir.

C'est sympa. Je te dis cela demain matin.

Bonne soirée

Hello,

C'est génial ça fonctionne nickel.

Un énorme merci. Maintenant je vais pouvoir décortiquer le code pour le comprendre et progresser.

Bonne journée

Rechercher des sujets similaires à "recuperer que valeur"