Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 11h22   #1
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Par défaut Sélection de ligne

Bonjour,

je recherche une macro m'aidant à sélectionner une ligne à partir de la cellule E16 jusqu'à la prochaine cellule de la même ligne contenant la valeur 1.
J'ai ce bout de code :

Code :
1
2
Range("E16", Range("E16").End(xlToRight)).Select
Range(ActiveCell, ActiveCell.End(xlToRight)).Select
Mais la sélection se fait jusqu'à la dernière cellule non vide de la même ligne.
Merci par avance.
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 11h31   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
Bonjour,

En faisant une recherche de la prochaine cellule contenant 1 (Variable Rg)
Code :
1
2
3
4
5
6
7
Dim rg As Range
 
Set rg = Range("E16:E" & Range("E65536").End(xlUp).Row).Find(What:=1, lookat:=xlWhole)
 
If Not rg Is Nothing Then
    Range("E16:" & rg.Address).Select
End If

NB : pour la selection des lignes
Code :
Rows("16:" & rg.Row).Select
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 11h56   #3
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Salut, merci pour ce code.
Je viens de tester, le code fonctionne et sélectionne bien jusqu'à la prochaine cellule contenant la valeur 1. Mais, la sélection se fait sur la colonne et non pas sur la ligne, que dois je modifier?
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h01   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
regardes le NB de mon précédent POST
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h10   #5
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
J'ai vu le NB . Mais il continue à sélectionner la colonne alors que je n'ai que besoin de la ligne. Désolé, ça semble être un problème simple pour toi, mais le vba n'est pas ma tasse de thé..
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h12   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
Comme cela

Code :
1
2
3
4
5
6
7
Dim rg As Range
 
Set rg = Range("E16:E" & Range("E65536").End(xlUp).Row).Find(What:=1, lookat:=xlWhole)
 
If Not rg Is Nothing Then
    Rows("16:" & rg.Row).Select
End If
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h17   #7
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Ok, c'est ce que j'ai essayé. Je te confirme bien que la sélection s’étend sur l'ensemble du tableau. N'y a t-il rien à modifier dans le code :

Code :
Range("E16:E" & Range("E65536").End(xlUp).Row).Find(What:=1, lookat:=xlWhole)
pour limiter la sélection juste à la ligne 16?
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h22   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
Citation:
je recherche une macro m'aidant à sélectionner une ligne à partir de la cellule E16 jusqu'à la prochaine cellule de la même ligne contenant la valeur 1.
Le code fait cela. On sélectionne les lignes, à partir de la ligne 16 jusqu’à la ligne qui contient 1

Qu'entends tu par
Citation:
la sélection s’étend sur l'ensemble du tableau
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h29   #9
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
J'ai rajouté un bout de code pour la copie de la sélection après end if:
Code :
1
2
    Application.CutCopyMode = False
    Selection.Copy
A ce moment là, ce n'est pas que la ligne 16 (de E16 à O16, O16 étant la case avant la prochaine ayant pour valeur 1, O17 étant la case à valeur 1) qui est copiée, mais le tableau entier qui est copié sans distinction entre les lignes et les colonnes. Toutes les valeurs sont donc concernées par la copie.
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 13h51   #10
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonjour,

Si j'ai bien compris ce que tu veux faire

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
Sub Test()
Dim MaPlage As Range, ColUn As Range
Dim ColDer As Long
    With Worksheets("Feuil1")
        'Recherche du numéro de la derniere cellule non vide de la ligne 16
        ColDer = .Cells(16, .Columns.Count).End(xlToLeft).Column
        'Recherche de la cellule qui contient la valeur 1
        Set ColUn = .Range(.Cells(16, 5), .Cells(16, ColDer)).Find(What:=1, lookat:=xlWhole)
        'Détermination de la plage
        Set MaPlage = .Range(.Cells(16, 5), .Cells(16, ColUn.Column))
        'Sélection de la plage
        If Not MaPlage Is Nothing Then MaPlage.Select
    End With
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 14h00   #11
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Impeccable! c'est ce que je recherchais.
Si je souhaite faire une modification et arrêter la sélection avant la colonne qui contient la valeur 1 dans cette même ligne, que faut il modifier? Je pense qu'il s'agit de ma dernière question avant clôture du sujet.
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 14h00   #12
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
Ok, je me rend copte que la recherche était en ligne et non en colonne

Essais comme cela
Code :
1
2
3
4
5
6
7
Dim rg As Range
 
Set rg = Range("E16:" & Cells(16, Cells(16, Columns.Count).End(xlToLeft).Column).Address).Find(What:=1, lookat:=xlWhole, LookIn:=xlValues)
 
If Not rg Is Nothing Then
    Range("E16:" & rg.Address).Select
End If
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 14h09   #13
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Bon, très bien, j'ai fait la petite modification qui me permets de sélectionner jusqu'à la colonne se trouvant avant celle qui contient la valeur 1.
Merci beaucoup pour votre aide.
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 14h09   #14
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Re,

Code :
1
2
        'Détermination de la plage
        Set MaPlage = .Range(.Cells(16, 5), .Cells(16, ColUn.Column).Offset(0, -1))
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 14h18   #15
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Le code fonctionne, c'est ce que je recherchais. Merci beaucoup!
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 20h41   #16
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Bonsoir, je reviens à la charge!
J'essaie de contrôler le code que tu m'as donné à l'aide d'une boucle for. Sinon, je dois la copier 12 fois dans la macro.

Je n'arrive pas à appliquer For i = 4 To 48 au code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
Set rg = Range("E:" & Cells(4, Cells(4, Columns.Count).End(xlToLeft).Column).Address).Find(What:="", lookat:=xlWhole, LookIn:=xlValues).Offset(0, -1)
 
If Not rg Is Nothing Then
    Range("E4:" & rg.Address).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If
 
Next i
Un petit coup de pouce s'il vous plait.
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 20h50   #17
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
a essayer

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
For i = 4 To 48
 
Set rg = Range("E" & i & ":" & Cells(i, Cells(i, Columns.Count).End(xlToLeft).Column).Address).Find(What:=1, lookat:=xlWhole, LookIn:=xlValues).offset(0,-1)
 
    If Not rg Is Nothing Then
        Range("E" & i & ":" & rg.Address).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues
    End If
 
Next i
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h08   #18
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Salut,

merci, je viens de tester, j'ai intégré ça au code suivant mais ça ne marche pas. Il me renvoie un message d'erreur de type erreur d’exécution 91.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub figerdate()
'
' figerdate Macro
'
' Touche de raccourci du clavier: Ctrl+z
'
Dim rg As Range
Dim i As Integer
 
For i = 4 To 48
 
Set rg = Range("E" & i + 4 & ":" & Cells(i + 4, Cells(i + 4, Columns.Count).End(xlToLeft).Column).Address).Find(What:="", lookat:=xlWhole, LookIn:=xlValues).Offset(0, -1)
 
If Not rg Is Nothing Then
    Range("E" & i + 4 & ":" & rg.Address).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If
 
Next i
 
End Sub
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h13   #19
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 911
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 911
Points : 7 213
Points : 7 213
Pourquoi boucler de 4 à 48 si tu ajoutes 4 a chaque fois.
Il serait plus simple de boucler de 8 à 52

Pour l'erreur 91, c'est que quelle ligne?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h18   #20
Invité de passage
 
Homme Ludovic F.
Ingénieur qualité méthodes
Inscription : novembre 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Homme Ludovic F.
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : novembre 2011
Messages : 17
Points : 1
Points : 1
Je dois boucler de 4 à 48 car, la première ligne à copy-paste se trouve en ligne 4. La suivante en 8, puis 12, etc...
L'erreur 91 se situe sur la suivante :
Code :
Set rg = Range("E" & i + 4 & ":" & Cells(i + 4, Cells(i + 4, Columns.Count).End(xlToLeft).Column).Address).Find(What:="", lookat:=xlWhole, LookIn:=xlValues).Offset(0, -1)
Le problème peut il survenir du ou de l'itération i+4?
kreutzberg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h01.


 
 
 
 
Partenaires

Hébergement Web