A voir également:
- Boucler si une cellule est vide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment supprimer une page vide sur word - Guide
- Formate pour taxer client frigo vide - Forum Loisirs / Divertissements
- Si une cellule contient un mot alors ✓ - Forum Excel
6 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
13 août 2015 à 21:24
13 août 2015 à 21:24
hein ???
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
13 août 2015 à 22:28
13 août 2015 à 22:28
Bonjour
Hmmm quelques points a clarifier.
Reboucler c'est quoi pour toi ?
Et aussi, afin que les instruction ne soit pas suivies
Quelles instruction ? Il n'y a rien dans l'exemple de code.
Je ne vois pas non plus IsEmpty(ActiveCell) dans une boucle for.
Habituellement, on utilise range ou cells
For i = 491 To 500
if isempty(Range("A" & i)) then
Au lieu de IsEmpty, il y a peut-etre MergeCells qui serait plus approprié.
For i = 491 To 500
If Range("A" & i).MergeCells = False then
faire des instructions
Else
faire d'autre instructions
End If
Hmmm quelques points a clarifier.
Reboucler c'est quoi pour toi ?
Et aussi, afin que les instruction ne soit pas suivies
Quelles instruction ? Il n'y a rien dans l'exemple de code.
Je ne vois pas non plus IsEmpty(ActiveCell) dans une boucle for.
Habituellement, on utilise range ou cells
For i = 491 To 500
if isempty(Range("A" & i)) then
Au lieu de IsEmpty, il y a peut-etre MergeCells qui serait plus approprié.
For i = 491 To 500
If Range("A" & i).MergeCells = False then
faire des instructions
Else
faire d'autre instructions
End If
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
14 août 2015 à 08:42
14 août 2015 à 08:42
Bonjour,
Il est certainemment trop tard ou trop compliqué de reprendre la construction du fichier mais:
plutôt que d'utiliser des cellules fusionnées
par exemple:
cellules A1:B1 sélectionnées
alignement
horizontal
centré sur plusieurs colonnes
ce qui, au passage, semblerait coincider avec ta narration
si A1:B1 fusionnéd'autre part, quand tu appeles une mergecells, tu as toujours A1 d'affiché
et comme mes 2 camarades que je salue: reboucler ?????
Il est certainemment trop tard ou trop compliqué de reprendre la construction du fichier mais:
plutôt que d'utiliser des cellules fusionnées
par exemple:
cellules A1:B1 sélectionnées
alignement
horizontal
centré sur plusieurs colonnes
ce qui, au passage, semblerait coincider avec ta narration
si A1:B1 fusionnéd'autre part, quand tu appeles une mergecells, tu as toujours A1 d'affiché
et comme mes 2 camarades que je salue: reboucler ?????
Bonjour,
Excusez moi je me suis vraiment mal exprimé...
En plus claire, si ma cellule est vide
il faudrait qu'il ne "se passe rien" et que "je passe" à la colonne 492.
Désolé pour la longueur du code, mais je reprends :
Merci d'avance,
sébastien
Excusez moi je me suis vraiment mal exprimé...
En plus claire, si ma cellule est vide
il faudrait qu'il ne "se passe rien" et que "je passe" à la colonne 492.
Désolé pour la longueur du code, mais je reprends :
For i = 491 To 500 If IsEmpty(ActiveCell) = False Then ' ******il faut que je passe sur la colonne 492 (sur la boucle for)******* Else nom = Worksheets("Résultats").Cells(1, i).Value Workbooks("classeur 2.xlsx").Activate For j = 13 To 15 Cells.Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate ligne = ActiveCell.Row colonne = ActiveCell.Column ligne13 = ligne + j Workbooks("classeur 2.xlsx").Activate Worksheets("résultats").Cells(ligne13, colonne).Select If j = 13 Then MmDa = ActiveCell End If If j = 14 Then deuxMhuitM = ActiveCell End If Next End If Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM Next End Sub
Merci d'avance,
sébastien
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
14 août 2015 à 12:24
14 août 2015 à 12:24
Re-Hein ????
« il faudrait qu'il ne "se passe rien" et que "je passe" à la colonne 492. »
Il faudrait savoir si « il ne "se passe rien" » ou si « "je passe" à la colonne 492 » !!!!
« il faudrait qu'il ne "se passe rien" et que "je passe" à la colonne 492. »
Il faudrait savoir si « il ne "se passe rien" » ou si « "je passe" à la colonne 492 » !!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié par pijaku le 14/08/2015 à 12:41
Modifié par pijaku le 14/08/2015 à 12:41
Bonjour tout le monde.
Allez, au hasard....
Pouf pouf...
Enlève ton Else et change de place ton End If :
devient :
Soit :
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Allez, au hasard....
Pouf pouf...
Enlève ton Else et change de place ton End If :
End If Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM
devient :
Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM End If
Soit :
For i = 491 To 500 If IsEmpty(ActiveCell) = False Then ' ******il faut que je passe sur la colonne 492 (sur la boucle for)******* nom = Worksheets("Résultats").Cells(1, i).Value Workbooks("classeur 2.xlsx").Activate For j = 13 To 15 Cells.Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate ligne = ActiveCell.Row colonne = ActiveCell.Column ligne13 = ligne + j Workbooks("classeur 2.xlsx").Activate Worksheets("résultats").Cells(ligne13, colonne).Select If j = 13 Then MmDa = ActiveCell End If If j = 14 Then deuxMhuitM = ActiveCell End If Next Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM End If Next End Sub
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
For i = 491 To 500 If IsEmpty(ActiveCell) = False Then ' ******si la cellule est vide, je voudrais revenir directement à la boucle '****** for, et ainsi sauter les instruction en dessous ' ******ceux ci me permettrait de passer à la colonne suivante, qui elle ' *******n'est pas vide '****** je pense que faire celà, il faut un '******* If IsEmpty(ActiveCell) = False Then ... quelle est la suite... Else ' à l'inverse, si la cellule n'est pas vide : je suis l'instruction suivante: nom = Worksheets("Résultats").Cells(1, i).Value Workbooks("classeur 2.xlsx").Activate For j = 13 To 15 Cells.Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate ligne = ActiveCell.Row colonne = ActiveCell.Column ligne13 = ligne + j Workbooks("classeur 2.xlsx").Activate Worksheets("résultats").Cells(ligne13, colonne).Select If j = 13 Then MmDa = ActiveCell End If If j = 14 Then deuxMhuitM = ActiveCell End If Next End If Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1.xlsm").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM Next End Sub
En espérant que vous me comprendrez mieux cette fois ci...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié par pijaku le 14/08/2015 à 13:36
Modifié par pijaku le 14/08/2015 à 13:36
Soit :
1- tu prends le problème à l'inverse en disant : si ma cellule n'est pas vide :
ou
2- tu testes si ta cellule est vide et si oui, tu ne fais rien sinon ton action :
1- tu prends le problème à l'inverse en disant : si ma cellule n'est pas vide :
If Not IsEmpty(ActiveCell) Then
ou
If ActiveCell <> "" Then
2- tu testes si ta cellule est vide et si oui, tu ne fais rien sinon ton action :
If IsEmpty(ActiveCell) Then 'On ne fait rien Else 'tes instructions End If
Ok, parfait tout passe bien pour cela,
cependant,
j'ai un autre problème...
Je souhaite aller rechercher dans un autre fichier des valeurs qui se situent 13 et 14 lignes plus bas.
Cependant,
il faut que j'aille rechercher dans (classeur 2) un numéro que j'appelle "nom",
lorsque je recherche cette cellule (nom) dans mon classeur 2, à partir de l'éditeur de recherche,
et que je colle mes valeur dans classeur 1,
les valeurs renvoyées sont toutes les mêmes, à savoir sur la ligne 99 j'ai une valeur y, et sur la ligne 100 j'ai une autre valeur z,
et lorsque la boucle tourne, j'ai mes valeur y et z sur toutes les colonnes (entre 491 et 500)
Je pense qu'il doit y avoir un problème ma recherche de cellule, mais imposible de la corriger,
voici le code :
Vous en remerciant par avance,
cordialement,
sébastien
cependant,
j'ai un autre problème...
Je souhaite aller rechercher dans un autre fichier des valeurs qui se situent 13 et 14 lignes plus bas.
Cependant,
il faut que j'aille rechercher dans (classeur 2) un numéro que j'appelle "nom",
lorsque je recherche cette cellule (nom) dans mon classeur 2, à partir de l'éditeur de recherche,
et que je colle mes valeur dans classeur 1,
les valeurs renvoyées sont toutes les mêmes, à savoir sur la ligne 99 j'ai une valeur y, et sur la ligne 100 j'ai une autre valeur z,
et lorsque la boucle tourne, j'ai mes valeur y et z sur toutes les colonnes (entre 491 et 500)
Je pense qu'il doit y avoir un problème ma recherche de cellule, mais imposible de la corriger,
voici le code :
Sub Macro1() For i = 491 To 510 'Workbooks("classeur 1").Activate nom = Worksheets("Résultats").Cells(1, i).Value If IsEmpty(ActiveCell) = False Then ' Worksheets("Résultats").Cells(1, i).Value = Else Workbooks("classeur 2").Activate Cells.Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate For j = 13 To 15 ligne = ActiveCell.Row colonne = ActiveCell.Column ligne13 = ligne + j Workbooks("classeur 2").Activate Worksheets("IPC résultats PF").Cells(ligne13, colonne).Select If j = 13 Then MmDa = ActiveCell End If If j = 14 Then deuxMhuitM = ActiveCell End If Next End If Workbooks("classeur 1").Activate Worksheets("Résultats").Cells(99, i).Select ActiveCell = MmDa Workbooks("classeur 1").Activate Worksheets("Résultats").Cells(100, i).Select ActiveCell = deuxMhuitM Next End Sub
Vous en remerciant par avance,
cordialement,
sébastien
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
14 août 2015 à 16:06
14 août 2015 à 16:06
Bonjour,
Le meilleur outil de débuggage est la trace pas à pas.
Dans la marge de gauche, un clic permet de mettre un point d'arret.
Et vous faites exécuter le code ligne par ligne avec F8 pour avancer à la prochaine ligne.
Durant l'exécution, promener la souris sur les variables pour voir leur valeur.
Quel est la valeur de nom, de ligne, de de colonne de ligne13 ???
Vous allez voir quelle cellule est trouvé et si cela correspond à ce que vous attendiez.
Le meilleur outil de débuggage est la trace pas à pas.
Dans la marge de gauche, un clic permet de mettre un point d'arret.
Et vous faites exécuter le code ligne par ligne avec F8 pour avancer à la prochaine ligne.
Durant l'exécution, promener la souris sur les variables pour voir leur valeur.
Quel est la valeur de nom, de ligne, de de colonne de ligne13 ???
Vous allez voir quelle cellule est trouvé et si cela correspond à ce que vous attendiez.