Atteindre une cellule
Résolu/Fermé
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
-
26 déc. 2013 à 06:48
joseB45 Messages postés 22 Date d'inscription jeudi 26 décembre 2013 Statut Membre Dernière intervention 16 septembre 2015 - 30 déc. 2013 à 18:06
joseB45 Messages postés 22 Date d'inscription jeudi 26 décembre 2013 Statut Membre Dernière intervention 16 septembre 2015 - 30 déc. 2013 à 18:06
A voir également:
- Vba aller à une cellule
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
- Verrouiller une cellule excel - Guide
- Si cellule contient texte alors ✓ - Forum Excel
9 réponses
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
26 déc. 2013 à 12:00
26 déc. 2013 à 12:00
j'ai fini par trouvé ca
Sub Macro1()
Dim Plage As Range
Set Plage = Application.InputBox("Sélectionnez une plage !", "Us se débrouille pour vous...", Type:=8)
Dim MotRechercher As String
MotRechercher = InputBox("Entrer la donnée à repérer", "Us")
If MotRechercher = vbNullString Then Exit Sub
Dim Cellule As Range
For Each Cellule In Plage
If InStr(1, Cellule.Value, MotRechercher) > 0 Then
Range(Cellule.Address).Select
With Selection.Interior
.ColorIndex = 6 'jaune
.Pattern = xlSolid
End With
End If
Next Cellule
End Sub
c'est presque ce que je recherchais. Ce qui aurait été top c'est d'avoir la selection de plage en dur dans la macro plutôt que de passer par la fenetre de dialogue
merci d'avance
Sub Macro1()
Dim Plage As Range
Set Plage = Application.InputBox("Sélectionnez une plage !", "Us se débrouille pour vous...", Type:=8)
Dim MotRechercher As String
MotRechercher = InputBox("Entrer la donnée à repérer", "Us")
If MotRechercher = vbNullString Then Exit Sub
Dim Cellule As Range
For Each Cellule In Plage
If InStr(1, Cellule.Value, MotRechercher) > 0 Then
Range(Cellule.Address).Select
With Selection.Interior
.ColorIndex = 6 'jaune
.Pattern = xlSolid
End With
End If
Next Cellule
End Sub
c'est presque ce que je recherchais. Ce qui aurait été top c'est d'avoir la selection de plage en dur dans la macro plutôt que de passer par la fenetre de dialogue
merci d'avance
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
26 déc. 2013 à 12:27
26 déc. 2013 à 12:27
Bonjour
essaies
essaies
Option Explicit
Sub atteindre()
Dim Jour As Date, Adresse As String
With Sheets(1)
Jour = .Range("C2")
End With
With Sheets(2)
On Error GoTo Erreur
Adresse = .Cells.Find(Jour, xlValues).Address
.Activate
.Range(Adresse).Select
End With
Erreur:
MsgBox Jour & ": donnée inconnue en feuille2"
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
26 déc. 2013 à 12:33
26 déc. 2013 à 12:33
Bonjour,
regarde ce code, la valeur recherchée, (ta date) en cellule D3 de la feuille nommée Feuil1
Sélectionne la cellule contenant la même valeur dans la colonne F de la feuille nommée Feuil2
Sub Valeur_Trouvée()
Dim x As String
Sheets("Feuil1").Range("D3").Select
x = ActiveCell.Value
Sheets("Feuil2").Select
With Worksheets("Feuil1").Range("F:F")
Set c = .Find(x, LookIn:=xlValues)
If Not c Is Nothing Then
Address = c.Address
End If
End With
Range(Address).Select
End Sub
regarde ce code, la valeur recherchée, (ta date) en cellule D3 de la feuille nommée Feuil1
Sélectionne la cellule contenant la même valeur dans la colonne F de la feuille nommée Feuil2
Sub Valeur_Trouvée()
Dim x As String
Sheets("Feuil1").Range("D3").Select
x = ActiveCell.Value
Sheets("Feuil2").Select
With Worksheets("Feuil1").Range("F:F")
Set c = .Find(x, LookIn:=xlValues)
If Not c Is Nothing Then
Address = c.Address
End If
End With
Range(Address).Select
End Sub
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
26 déc. 2013 à 12:43
26 déc. 2013 à 12:43
merci Michel pour cette reponse
mais bon, je ne suis pas tres doué en VBA, je construis mes macros soit en prenant a gauche et a droite en les adaptant a mes besoins soit en utilisant la fonction enregistrer de VBA et je dois avouer que je ne comprends pas comment fonctionne la tienne.
le but de cette macro est le suivant =
je rempli un tableau avec différentes valeurs tous les mois, je l'archive sur une autre feuille et ensuite j'efface le contenu du tableau feuille1.
l'interet de cette macro pour laquelle je vous sollicite c'est que au bout d'un certain nombre d'annee la feuille d'archivage sera bien rempli et que je voudrais pouvoir acceder rapidement a n'importe quel tableau d'un mois/annee donne.
alors cette macro que j'ai trouve va tres bien sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
voila, j'espere avoir été assez clair
jose
mais bon, je ne suis pas tres doué en VBA, je construis mes macros soit en prenant a gauche et a droite en les adaptant a mes besoins soit en utilisant la fonction enregistrer de VBA et je dois avouer que je ne comprends pas comment fonctionne la tienne.
le but de cette macro est le suivant =
je rempli un tableau avec différentes valeurs tous les mois, je l'archive sur une autre feuille et ensuite j'efface le contenu du tableau feuille1.
l'interet de cette macro pour laquelle je vous sollicite c'est que au bout d'un certain nombre d'annee la feuille d'archivage sera bien rempli et que je voudrais pouvoir acceder rapidement a n'importe quel tableau d'un mois/annee donne.
alors cette macro que j'ai trouve va tres bien sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
voila, j'espere avoir été assez clair
jose
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
26 déc. 2013 à 13:59
26 déc. 2013 à 13:59
Re,
j'ai répondu à ta demande:
dans une cellule donnee de la feuille1 je rentre une valeur (par exemple : 01/01/2014) et ca m'envoie directement a la cellule de la feuille2 qui contient cette valeur.
en quelque sorte comme la fonction "recherché".
sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
Comprend pas ce que tu veux dire, je n'ai pas parlé de plage
peut être remplacer
au passage:
la fonction " Find" <---> recherche
Et aussi:
en VBa, on évite au maximum d'utiliser les select-selection qui occuoe beaucoup de mémoire RAM et ralentissent considérablement la procédure
j'ai répondu à ta demande:
dans une cellule donnee de la feuille1 je rentre une valeur (par exemple : 01/01/2014) et ca m'envoie directement a la cellule de la feuille2 qui contient cette valeur.
en quelque sorte comme la fonction "recherché".
sauf que je n'ai pas le besoin d'indiquer la plage puisque cette plage est fixe = colonne A.
Comprend pas ce que tu veux dire, je n'ai pas parlé de plage
peut être remplacer
Adresse = .Cells.Find(Jour, xlValues).Address
par
Adresse = .Columns("A").Find(Jour, xlValues).Address
au passage:
la fonction " Find" <---> recherche
Et aussi:
en VBa, on évite au maximum d'utiliser les select-selection qui occuoe beaucoup de mémoire RAM et ralentissent considérablement la procédure
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
27 déc. 2013 à 05:53
27 déc. 2013 à 05:53
merci Michel mais pour ton code ca me donne ca = erreur 1004 méthode 'range' de l'objet '_global' a échoué
Mike, a chaque execution je finis sur la boite de dialogue MsgBox
on peut mettre des pièces jointes ici ? ce serait peut etre plus simple avec une copie du fichier
a+
Mike, a chaque execution je finis sur la boite de dialogue MsgBox
on peut mettre des pièces jointes ici ? ce serait peut etre plus simple avec une copie du fichier
a+
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 27/12/2013 à 08:10
Modifié par michel_m le 27/12/2013 à 08:10
Bonjour
testée avec succès sur cette maquette
https://www.cjoint.com/?3LBigIoJ0cx
code modifié
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Michel
testée avec succès sur cette maquette
https://www.cjoint.com/?3LBigIoJ0cx
code modifié
Option Explicit
Sub atteindre()
Dim Jour As Date, Adresse As String
With Sheets(1)
Jour = .Range("C2")
End With
With Sheets(2)
On Error GoTo Erreur
Adresse = .Columns("A").Find(Jour).Address
.Activate
.Range(Adresse).Select
End With
Exit Sub
Erreur:
MsgBox Jour & ": donnée inconnue en feuille2 colonne A"
End Sub
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Michel
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
30 déc. 2013 à 16:03
30 déc. 2013 à 16:03
ha superbe, merci Michel, ca marche !
bon en realite dans ce dossier, il y a 2 feuilles d'archivages.
j'ai donc adapte ce code aux deux, ca fonctionne tres bien sur la premiere mais pas sur la deuxieme, je tombe sur la MsgBox, a savoir que la donnee recherche est dans une cellule de la colonne E mais qu'elle est fusionnee avec les cellules de droite (colonne Fet G) serait ce la raison du fait que ca ne fonctionne pas ?
je joint le dossier
https://www.cjoint.com/?3LEqaXciQHp
il n'y a aucune donnee confidentielle dedans
merci
bon en realite dans ce dossier, il y a 2 feuilles d'archivages.
j'ai donc adapte ce code aux deux, ca fonctionne tres bien sur la premiere mais pas sur la deuxieme, je tombe sur la MsgBox, a savoir que la donnee recherche est dans une cellule de la colonne E mais qu'elle est fusionnee avec les cellules de droite (colonne Fet G) serait ce la raison du fait que ca ne fonctionne pas ?
je joint le dossier
https://www.cjoint.com/?3LEqaXciQHp
il n'y a aucune donnee confidentielle dedans
merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 30/12/2013 à 16:19
Modifié par michel_m le 30/12/2013 à 16:19
une cellule de la colonne E mais qu'elle est fusionnee avec les cellules de droite
certainement
en macro, évite au maximum les cellules fusionnées
il faut donc que tu enlèves la fusion, que tu sélectionnes les cellules fusionnées (E,F,G) et que tu demandes "centré sur plusieurs colonnes" (au besoin tu peux agrandir la largeur colonne E)
Pour accéder à ces commandes, tu cliques sur la petite flèche en bas et à droite du ruban accueil-alignement
Michel
certainement
en macro, évite au maximum les cellules fusionnées
il faut donc que tu enlèves la fusion, que tu sélectionnes les cellules fusionnées (E,F,G) et que tu demandes "centré sur plusieurs colonnes" (au besoin tu peux agrandir la largeur colonne E)
Pour accéder à ces commandes, tu cliques sur la petite flèche en bas et à droite du ruban accueil-alignement
Michel
joseB45
Messages postés
22
Date d'inscription
jeudi 26 décembre 2013
Statut
Membre
Dernière intervention
16 septembre 2015
30 déc. 2013 à 18:06
30 déc. 2013 à 18:06
c'est nickel, je te remercie Michel
j'ai simplement change l'esthetique de la tete du tableau de facon a avoir la date sur une seule colonne et tip top ca marche
encore merci
j'ai simplement change l'esthetique de la tete du tableau de facon a avoir la date sur une seule colonne et tip top ca marche
encore merci