recherche cellule

D

Dav

Guest
Bien le bonjour chers forumistes.

Aie!AIE!Aie, ces boucles dans les tableaux ne sont pas encore évidentes
Cette pièce jointe le montre, mais, bon, comme j'ai à faire à des pros, il n'y a donc pas de soucis
Merci.
 

Pièces jointes

  • tableau.ZIP
    3.3 KB · Affichages: 16
  • tableau.ZIP
    3.3 KB · Affichages: 17
  • tableau.ZIP
    3.3 KB · Affichages: 15
R

Robert

Guest
Salut Dav, Salut le forum,

Dav je te propose ces quelques lignes pour ton premier problème :

Public Sub recherdat()
Dim auj As Byte
auj = Month(Date)
For Each cel In Sheets(1).Range("C2:N2")
If Month(cel.Value) >= auj Then
cel.Offset(1, -1).Select
Exit For
End If
Next cel
End Sub

Par contre je n'ai pas compris ce que tu voulais sur la feuille 2.

À plus,

Robert
 
R

Robert

Guest
Salut Dav, Salut le forum,

Désolé mais j’ai encore moins compris… (c’est pas étonnant remarque avec mon petit cerveau…). Tu me parles de 3 tableaux pour une seule journée ? Tu parles d’exporter et d’importer ? Où ? Tant que je n’aurais pas bien compris ce que tu veux exactement je serai incapable de te proposer une solution.

À plus,

Robert
 
D

Dav

Guest
Salut Robert,

Il est vrai que, quand on connait le problème, il n'est pas forcément facile de l'expliquer
Donc sans tableau, j'essaie.
Je veux avoir les données de la journée d'hier donc(je résonne en jours ouvrés) :
La condition serait :dans la plage de cellules (B5:L5), donner la dernière valeur rentrée(3 pour défaut n°2) et dans la plage(B17:L17), on retrouverait 2(défaut 14) du fichier zip tableau2.
Ou alors , cela pourrait être si c'est plus facile à transcrire en VBA :
dans la plage de données(B5:L5), aller à la première cellule vide(I5), donner la valeur de la cellule juste avant.
Idem pour l'autre ou les autres plages de données.
Je pense cette fois-ci avoir été un peu plus clair si ce n'est complétement.
Encore merci.
 
R

Robert

Guest
Re salut Dav, bonjour le forum,

je te propose ça : (j'ai déclaré les variables comme Variant, car je ne sais pas quel type de valeur elles peuvent contenir...)

Dim def2 As Variant
Dim def14 As Variant
def2 = Range("B5:L5").End(xlToRight).Value
def14 = Range("B17:L17").End(xlToRight).Value

À plus,

Robert
 
D

David

Guest
RE RE RE Salut Robert,

Je te remercie pour ces infos qui m'apportent un plus dans ce que je recherche.
Moi de mon côté je cherchais également un solution possible et j'aimerais, si tu le veux bien, avoir ton avis dessus :
Sub TEST()
Dim i As Integer
i = 0
Range("b5").Select
i = i + 1
While Len(Trim(ActiveCell.Value)) <> 0
ActiveCell.Offset(0, 1).Select
Wend
If ActiveCell.Value = 0 Then
ActiveCell.Offset(0, -1).Copy
End If
Range("b26").Select
While Len(Trim(ActiveCell.Value)) <> 0
ActiveCell.Offset(0, 1).Select
Wend
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Celui-ci, me permet en plus, de copier la valeur située une cellule avant la valeur null. et de la coller là ou je veux(dans ce fichier ou un autre)
Le problème(eh oui, comme dans beaucoup de cas, je crois), c'est qu'en plus de me copier la valeur, il me copie dans la cellule qui reçoit, le format de la copie(donc, dans le tableau que j'avais joint), la couleur(que je supprime par la suite, et la bordure que je ne veux pas).
As-tu une idée ?
Merci
 
G

Gérard DEZAMIS

Guest
Bonsoir Dav et Robert

1000 excuses pour "pirater" votre post mais je monte en marche simplement pour adresser à Robert un gran Merci car ....
je n'ai pas honte du tout mais il m'a appris à selectionner une cellule en fonction de la date du mois et je viens de m'en reservir pour dépanner David.
Prommesse tenue ......................... le merci est envoyé
bien sincèrement

@+
GD
 
R

Robert

Guest
Bonsoir Dav, Gérard, le forum,

Dav, je ne vois pas trop l'utilité de Len(Trim...) à part si tes données proviennent d'une importation de fichier pouvant contenir des espaces avant ou après...

Essaie ça :

Public Sub test2()
Dim def2 As Variant
Dim def14 As Variant
def2 = Range("B5:L5").End(xlToRight).Value
def14 = Range("B17:L17").End(xlToRight).Value
If Range("B26").Value = "" Then
Range("B26").Value = def2
Range("B27").Value = def14
Else
Range("IV26").End(xlToLeft).Offset(0, 1).Value = def2
Range("IV27").End(xlToLeft).Offset(0, 1).Value = def14
End If
End Sub

plus de problème de format de cellule (couleur et contour) car tu ne fais pas un copier/coller et tu évites d'avoir des boucles While et Wend. Si les valeur du défaut14 ne t'intéressent pas, supprime, dans la condition If, les lignes contenant def14.

Quant à Gérard, j'avoue rester tout con devant un si gentil compliment, mais il faut qu'il arrête sinon je vais penser que je deviens bon...

À plus,

Robert
 
D

David

Guest
Bonjour Gérard et Robert,

Vous m'avez tous les deux apportés de très bonnes informations,
Robert, tu peux être sûr d'être bon(sans modestie aucune).
Quant à moi, c'est en parcourant toutes ces informations très intéressantes de ce site, que je vais, comme vous autres, progresser.
Effectivement, len(trim), mévite donc d'avoir des espaces, mais, ta méthode est celle que je vais adopter.
Je vous remercie encore
Bye.
 

Discussions similaires

Réponses
3
Affichages
146
  • Résolu(e)
Microsoft 365 menu déroulant
Réponses
4
Affichages
736

Statistiques des forums

Discussions
312 492
Messages
2 088 902
Membres
103 982
dernier inscrit
krakencolas